有几十个这样的线程,但我找不到解决我的问题的方法(至少是一个有效的线程)。
所以我的 viewpager 中有 3 个 fragment ,我的最后一个(第 3 个) fragment 基本上是一个好友列表,我还有一个按钮,我用它打开一个新 fragment ,我在其中处理搜索/请求等。在那个 fragment 中我有“后退按钮”,我使用 getFragmentManager().popBackStack() 返回到 viewpager 中的“第 3 个” fragment 。我如何将 bool 值或其他值传递回“第三” fragment ?
我尝试手动调用第三个 fragment 的 onPause 和 onResume 方法,但是我的列表是空的。当我 popbackstack 时,也没有调用第三个 fragment 的方法。
这是我的代码
第三个 fragment
这是我打开新 fragment 的方式
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();
}
});
这就是我回到第三个 fragment 的方式
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()?
最佳答案
将添加 fragment 方法与 addBackStack 一起使用,在 poBackStack 上不会调用前一个 fragment 的 onResume。因此,如果您正在使用 addBackStack 和 popBackStack,并且您想要调用前一个 fragment 的 onResume,那么您必须使用 replace 而不是 add。所以你的代码就像 - transaction.replace(R.id.item_detail_container,configDetailSectionFragment);
完成此操作后,您可以使用 onResume 方法刷新列表。
关于android-fragments - 另一个 "update on popbackstack"主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23538182/