避免重新加载回来在片段中按下
我正在做一个汽车寻找的应用程序。我在gridview中显示结果,并且在右侧还有一个滑动菜单(用于搜索过滤器)。我已经使用该帮助的整个应用程序fragments.In的GridView的我在底部的负载更躯,当我在第12位gridview的点击,我开始另一个片段是这样的:避免重新加载回来在片段中按下
SearchDetailActivity.goToFragment(ProductDetailFragment.newInstance(map,position));
和ProductDetailFragment我有一个返回按钮,返回在之前的片段上是这样的:
SearchDetailActivity.goToFragment(SearchDetailFragment.newInstance(str_url));
现在当我回来再次数据显示从0-10项。
在goToFragment()我写这样的代码:
public static void goToFragment(Fragment fragment) {
Log.d("GoToFrag","sjdk>>"+fragment);
Fragment tmp = fm.findFragmentByTag(fragment.getClass().getName());
if (tmp != null && tmp.isVisible())
return;
ft = fm.beginTransaction();
ft.replace(R.id.main_fragment, fragment, fragment.getClass().getName());
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
currentTag = fragment.getClass().getName();
}
我想避免数据重新从ProductDetailFragment.If回来的时候我用的活动然后我可以使用onBackPressed()来备份和重装避免,但在片段中,当我按下应用程序的后退按钮,它重新加载SearchDetatilFragment,这是非常讨厌..请帮助我..提前感谢。
使用getFragmentManager()。popBackStack()按回来的片段,这将加载前一个片段,而不是创建一个新的片段。
对于您的应用程序备份按钮设置一个监听器是这样的:
View.OnClickListener mBackListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().popBackStack();
}
};
我已经在这个问题上绊倒了约3个月。最后,我的努力得到了回报并找到了解决办法。
问题是,当用户“替换”时,这相当于“删除并添加”。 所以当按下后退按钮时,片段被完全删除并重新创建。我们不得不隐藏父代片段并显示子代。
当检索算法片段称为
ft = fm.beginTransaction();
ft.replace(R.id.main_fragment, yourSearchFragment, "searchFragment");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
当调用产品详细片段
ft = fm.beginTransaction();
ft.hide(getFragmentManager().findFragmentByTag("searchFragment"));
ft.add(R.id.main_fragment, yourDetailfragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
好运
非常感谢。好答案。工作像一个魅力 – Saraschandraa
为我工作设置添加替代。谢谢 – jlopez
我有一个函数静态不能使用beginTransaction – delive
您是否有兴趣http://developer.android.com/reference/android /app/Fragment.html#onSaveInstanceState(android.os.Bundle) –