Android 附加到父活动和后退按钮的片段
我想问一些关于backbackbackfragments的问题。让我们假设一个应用程序中有两个按钮。当点击它们上的每一个时,一个新的片段开始并显示在屏幕上Android 附加到父活动和后退按钮的片段,android,android-fragments,Android,Android Fragments,我想问一些关于backbackbackfragments的问题。让我们假设一个应用程序中有两个按钮。当点击它们上的每一个时,一个新的片段开始并显示在屏幕上 if (buttonIndex == 0) { FragmentTransaction ft = fragmentManager.beginTransaction(); ft.replace(android.R.id.content,new FirstFragment()); ft.addToBackStack("ad
if (buttonIndex == 0) {
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(android.R.id.content,new FirstFragment());
ft.addToBackStack("added first");
ft.commit();
} else if (buttonIndex == 1) {
FragmentTransaction ft1 = fragmentManager.beginTransaction();
ft1.replace(android.R.id.content,new SecondFragment());
ft1.setTransition(ft1.TRANSIT_FRAGMENT_OPEN);
ft1.addToBackStack("added second");
ft1.commit();
}
现在你知道发生了什么,但这是我的问题。
我单击第一个和第二个按钮,两个片段都添加到
堆栈没问题:)。但是如果我点击第二个按钮3次,
然后相应的片段也将运行3次。意思是
我必须点击后退按钮3次,才能回到第一个片段
这应该会发生吗
问候,,
西奥 您可以创建一个片段。然后,您应该检查是否添加了一次相同的片段。如果是,则删除现有的一个
FragmentTransaction ft = fragmentManager.beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("FirstFragment");
if (prev != null) {
ft.remove(prev);
}
ft.replace(android.R.id.content,new FirstFragment(),"FirstFragment");
ft.addToBackStack("added first");
ft.commit();
此处显示的是DialogFragment实现您可以创建一个片段。然后,您应该检查是否添加了一次相同的片段。如果是,则删除现有的一个
FragmentTransaction ft = fragmentManager.beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("FirstFragment");
if (prev != null) {
ft.remove(prev);
}
ft.replace(android.R.id.content,new FirstFragment(),"FirstFragment");
ft.addToBackStack("added first");
ft.commit();
A显示在DialogFragment implementation中,如果您不希望每次单击按钮时都堆叠新实例,则不要创建新实例并添加到backstack。关于这一点,实际上没有硬性规定。如果用户希望返回到上一个片段中的数据,即每个连续片段都与上一个片段相关,则应将其堆叠,否则,如果它们不相关,则不要将其堆叠。使用
fragmentManager.popbackbackstack(null,fragmentManager.POP_back_stack_包括在内)代码>@BOUTERBIAT Qualid。我刚试过。片段仍然运行了3次,但我没有进入上一次,而是返回到主活动屏幕。如果不希望每次单击按钮时都堆叠新实例,则不要创建新实例并添加到backbackback。关于这一点,实际上没有硬性规定。如果用户希望返回到上一个片段中的数据,即每个连续片段都与上一个片段相关,则应将其堆叠,否则,如果它们不相关,则不要将其堆叠。使用fragmentManager.popbackbackstack(null,fragmentManager.POP_back_stack_包括在内)代码>@BOUTERBIAT Qualid。我刚试过。片段仍然运行了3次,但我没有在上一次中运行,而是返回到主活动屏幕。感谢您花时间回答,但我仍然有相同的问题:(你也给第二个片段添加了相同的函数吗?是的。我对第二个片段也做了完全相同的事情。谢谢你花时间回答,但我仍然有相同的问题:(你也给第二个片段添加了相同的函数吗?是的。我对第二个片段也做了完全相同的事情。)。