有几十个这样的线程,但我找不到解决我的问题(至少工作一个)。
所以我有3个片段在我的viewpager,我的最后(第3)片段基本上是一个朋友列表,我也有一个按钮,我打开一个新的片段,在那里我处理搜索/请求等。在那个片段中,我有"后退按钮",我回到我的"第3"片段在viewpager与getFragmentManager(). popbackstack()。我怎么能传递布尔值或东西回到"第三"片段?
我尝试手动调用第三片段的onPause和onResume方法,但我的列表是空的。当我popbackstack时,也不会调用第三个片段的方法。
这是我的代码
第三个片段
打开新的片段
ImageButton friendsButton = (ImageButton) v.findViewById(R.id.friendsButton);
friendsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SearchActivity configDetailSectionFragment = new SearchActivity();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.item_detail_container, configDetailSectionFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
这就是我回到第三段的方法
ImageButton backButton=(ImageButton)rootView.findViewById(R.id.backButton);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().popBackStack();
} });
我填充exlistview的方法工作得很好,只是在popbackstack之后没有方法被调用,所以我可以更新我的列表。
我应该改变什么,何时何地我应该调用listadapter.notifyDataSetChanged()?
使用addBackStack方法添加片段,在poBackStack上先前片段的onResume将不会被调用。所以如果你在使用addBackStack和popBackStack,你想调用你之前的片段的onResume,那么你必须使用replace而不是add,所以你的代码只是像-一样改变 transaction.replace (R.id.item_detail_container configDetailSectionFragment);
一旦你这样做了,你可以使用你的onResume方法来刷新列表