Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 附加到父活动和后退按钮的片段_Android_Android Fragments - Fatal编程技术网

Android 附加到父活动和后退按钮的片段

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

我想问一些关于backbackbackfragments的问题。让我们假设一个应用程序中有两个按钮。当点击它们上的每一个时,一个新的片段开始并显示在屏幕上

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次,但我没有在上一次中运行,而是返回到主活动屏幕。感谢您花时间回答,但我仍然有相同的问题:(你也给第二个片段添加了相同的函数吗?是的。我对第二个片段也做了完全相同的事情。谢谢你花时间回答,但我仍然有相同的问题:(你也给第二个片段添加了相同的函数吗?是的。我对第二个片段也做了完全相同的事情。)。