我正在处理片段事务,而backstack就像这样:
fragA => fragB => fragC => fragD
我想基于成功状态从fragD返回后返回fragA:
fragD => onBackPressed()=>弗拉加
不从后堆栈中删除fragB和fragC
如何使用Fragment
和Activity
s?
答案 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