【发布时间】:2015-02-09 15:14:57
【问题描述】:
我在某天之前问过一个问题,即:Using fragment more than one time with new values with backstack maintain
我的问题已经找到了..但是旧片段正在刷新(正在加载)..这不是必需的(因为它包含分页)。我知道刷新旧片段的原因是我使用过 goToFragmentWithBackStack 方法中的 FragmentTransaction.replace。如果我在 goToFragmentWithBackStack 方法中使用 FragmentTransaction.add,它将不再起作用,并且新数据将在旧片段中更新。
类似这样的东西:A(旧数据)->B->A(新数据)[如我所愿..预期结果] 但显示我是否在 goToFragmentWithBackStack 方法中使用了 FragmentTransaction.replace:A(加载/刷新的旧数据)->B->A(加载/刷新的新数据)
如果我在 goToFragmentWithBackStack 方法中使用 FragmentTransaction.add:A(old data)->B->nothing...
如果我在按下后退按钮时检查 backstack,它会显示如下内容:
如果我在 goToFragmentWithBackStack 方法中使用 FragmentTransaction.replace:A(加载/刷新的旧数据)
如果我在 goToFragmentWithBackStack 方法中使用 FragmentTransaction.add:A(有新数据和旧片段)
结论:我的主要问题是我想在 Back Pressed 时停止刷新旧片段 A 中的数据。在 goToFragmentWithBackStack 方法中使用 FragmentTransaction.add,它不起作用...
这是我的代码:
public static void goToFragmentWithBackStack(Fragment fragment) {
Fragment tmp = fm.findFragmentByTag(fragment.getClass().getName());
if (tmp != null && tmp.isVisible())
return;
ft = fm.beginTransaction();
ft.replace(R.id.content_frame, fragment, fragment.getClass().getName());
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
currentTag = fragment.getClass().getName();
}
调用片段:
LeftAndRightActivity.goToFragmentWithBackStack(new ExploreFragment(theWord,"#"));
ExploreFragment:
public ExploreFragment(String data,String pattern) {
this.str_data = data;
this.str_pattern = pattern;
}
现在应用程序的流程类似于我从 ExploreFragment(1) 到 PostDetailFragment 然后再用新数据 ExploreFragment(2) ..(工作正常)
现在,当我按设备的返回按钮返回时,旧的 ExploreFragment(1) 再次加载...我不想刷新 ExploreFragment(1) 的数据,它应该只是恢复而不是刷新.. .我希望你能理解我的问题..
请帮助我..提前谢谢..
【问题讨论】:
-
添加 FragmentTranscation.replace 函数的一些代码......理想情况下,我将在创建时将数据作为参数传递给新片段,您可以使用 getArgument() 方法在片段中检索它
-
你好,我已经添加了与链接中相同的代码..
-
我认为你没有明白我的意思..我已经使用“替换”方法成功添加了所有这些功能..我只想多次“添加”同一个片段而不是“替换”
-
是的..您可以使用“替换”方法在不同的实例中添加相同的片段 n 次
-
粘贴你正在使用的代码
标签: android android-fragments fragment back-stack