片段转换与onBackPressed()

时间:2016-05-10 02:30:03

标签: android android-fragments android-activity onbackpressed

我正在处理片段事务,而backstack就像这样:

  

fragA => fragB => fragC => fragD

我想基于成功状态从fragD返回后返回fragA:

  

fragD => onBackPressed()=>弗拉加

不从后堆栈中删除fragB和fragC

如何使用FragmentActivity s?

执行此操作

2 个答案:

答案 0 :(得分:1)

将片段添加到backstack时,您必须指定如下名称:

transaction.addToBackStack(fragment_home.getClass().getName());

从堆栈弹出时,您可以尝试使用片段名称或按位置。

getSupportFragmentManager().popBackStack("Name of the Fragment",
                                         FragmentManager.POP_BACK_STACK_INCLUSIVE);

通过这种方式,您可以遍历堆栈中的任何片段

您也可以在onBackPressed()内尝试。

答案 1 :(得分:0)

你不能用片段做到这一点(至少不是我所知)。

但要回答你问题的第二部分(如何用活动做到这一点)......你可以通过SingleTask活动实现这种效果。在活动文件中将活动A设置为singleTask,并在启动时,而不是创建新实例,它将重新打开旧实例。根据Android的文档,在启动SingleTask Activity时...

  

系统在新任务的根目录下创建活动并将意图路由到该任务。但是,如果活动的实例已经存在,系统会通过调用onNewIntent()方法将意图路由到现有实例,而不是创建新实例。

所以你只需要在Activity A中覆盖onNewIntent(),实质上,从Activity D调用它时,它将被拉回到堆栈顶部,而B和C将保留在它下面的堆栈上

查看此链接以获取更多信息。 http://developer.android.com/guide/topics/manifest/activity-element.html