Android片段导航,循环路径
好的,这是我的问题,我有三个片段,我们叫它们[1],[2]和[3] 以下是我希望他们遵循的路径: [1] >[2]>[3]>(后退键)>[1] 出于某种原因,这只起作用一次,当我尝试进入第二轮时,会发生以下情况: [1] >[2]>[3]>(后退键)>[1]>[2]>[3]>(后退键)>[3]>(后退键)>退出 也就是说,当我第二次进入[3]并按下“后退”按钮时,如果我再次按下,我的应用程序将退出到android,什么也不会发生。(从不返回到[1]) 我很确定这与addToBackSack方法有关,但我不能完全确定 这是我的密码 [A] [乙]Android片段导航,循环路径,android,android-fragments,navigation,Android,Android Fragments,Navigation,好的,这是我的问题,我有三个片段,我们叫它们[1],[2]和[3] 以下是我希望他们遵循的路径: [1] >[2]>[3]>(后退键)>[1] 出于某种原因,这只起作用一次,当我尝试进入第二轮时,会发生以下情况: [1] >[2]>[3]>(后退键)>[1]>[2]>[3]>(后退键)>[3]>(后退键)>退出 也就是说,当我第二次进入[3]并按下“后退”按钮时,如果我再次按下,我的应用程序将退出到android,什么也不会发生。(从不返回到[1]) 我很确定这与addToBackSack方法有
public void onItemClick(AdapterView父视图、视图、int位置、,
长id){
Fragment Fragment=新的[C]片段();
FragmentManager fm=this.getActivity().getFragmentManager();
FragmentTransaction=fm.beginTransaction();
事务.replace(R.id.container,fragment);
commit();
}
我没有在[B]上使用addToBackStack,因为我不想让android记住这个事务,对吗
谢谢 好的!找到答案了
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(this.getActivity(), "New order created",
Toast.LENGTH_SHORT).show();
Fragment fragment = new OrderFragment();
FragmentManager fm = this.getActivity().getFragmentManager();
fm.popBackStack();
FragmentTransaction transaction = fm.beginTransaction();
transaction.addToBackStack(null);
transaction.replace(R.id.container, fragment);
transaction.commit();
}
public void onItemClick(AdapterView父视图、视图、int位置、,
长id){
Toast.makeText(this.getActivity(),“新建订单”,
吐司。长度(短)。show();
Fragment Fragment=新的OrderFragment();
FragmentManager fm=this.getActivity().getFragmentManager();
fm.popbackbackstack();
FragmentTransaction=fm.beginTransaction();
transaction.addToBackStack(空);
事务.replace(R.id.container,fragment);
commit();
}
函数popBackStack()实现了这一点!:)我还不确定这是怎么回事。但确实如此 一般来说,使用
片段构建导航层次结构可能非常棘手,并且您经常会遇到与您描述的类似的问题。考虑只使用<代码>活动<代码>在你的应用程序中创建导航层次结构,并使用<代码>片段<代码>来显示那些<代码>活动中的内容。@ XVAVKAPELL在OP的问题中用“活动”替换“片段”,然后告诉我你的“建议”是如何解决他的问题的。新的ADT插件有点鼓励您在任何时候都使用片段(去尝试一下,默认情况下它会创建一个包含片段的活动)。我正在使用活动来分离应用程序登录|主|设置的不同部分。但在这些部分中,我使用片段。一定有办法让导航正确!
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Fragment fragment = new [C]Fragment();
FragmentManager fm = this.getActivity().getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.commit();
}
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(this.getActivity(), "New order created",
Toast.LENGTH_SHORT).show();
Fragment fragment = new OrderFragment();
FragmentManager fm = this.getActivity().getFragmentManager();
fm.popBackStack();
FragmentTransaction transaction = fm.beginTransaction();
transaction.addToBackStack(null);
transaction.replace(R.id.container, fragment);
transaction.commit();
}