[英]How to Load fragment from BackStack in android
我在一个片段中有4个按钮。 当我单击一个按钮“ A”时,将加载一个片段。 当单击按钮“ B”时,将加载另一个片段,依此类推。 我的问题是当我再次单击按钮时,正在加载新片段。 我想从backStack加载前一个片段。
if(rootView.findViewById(R.id.talk_main_container)!=null){
FragmentTransaction transaction = getFragmentManager().beginTransaction();
Bundle bundle=new Bundle();
bundle.putString("cityid", cityId);
if(position == 1){
MainForumsFragment mTalkNewFragment = new MainForumsFragment();
mTalkNewFragment.setArguments(bundle);
transaction.replace(R.id.talk_main_container, mTalkNewFragment);
}
if(position == 2){
TalkNewFragment mTalkNewFragment = new TalkNewFragment();
mTalkNewFragment.setArguments(bundle);
transaction.replace(R.id.talk_main_container, mTalkNewFragment);
}
if(position == 3){
TalkNewFragment mTalkNewFragment = new TalkNewFragment();
mTalkNewFragment.setArguments(bundle);
transaction.replace(R.id.talk_main_container, mTalkNewFragment);
}
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.addToBackStack(null);
transaction.commit();
}
那么我该如何实现呢?
不要将任何片段添加到堆栈
删除 transaction.addToBackStack(null);
你应该用
FragmentTransaction.replace(int containerId, Fragment fragment, String tag)
然后,您可以将片段取回:
getFragmentManager.findFragmentByTag(String tag)
将Fragments添加到Backstack时,添加特定的字符串标签,而不是addBackStack(null)
。
您可以使用popBackStack(tag,0)或popBackstackImmediate()
从后堆栈弹出片段。 这将弹出所有片段,直到找到具有指定标签的片段。
执行此操作时,请务必注意生命周期事件的顺序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.