我有片段1。在他们身上,我按下按钮并启动 DialogFramgent。在 DialogFragment 上,我按下按钮并启动 Fragment2。当我按下后,我返回 Fragment1,但不是 DialogFragmnet
2 回答
您可以将片段添加到后台堆栈。调用 addToBackStack() 应该可以解决问题。直接来自文档:“这个后退堆栈由活动管理,并允许用户通过按下后退按钮返回到之前的片段状态”。详见:http: //developer.android.com/guide/components/fragments.html
碧玉
在 Activity 中使用 Fragment 的一个很棒的特性是能够添加、删除、替换和执行其他操作,以响应用户交互。您提交给活动的每一组更改都称为一个事务,您可以使用 FragmentTransaction 中的 API 执行一个事务。您还可以将每个事务保存到由 Activity 管理的回退堆栈中,从而允许用户在片段更改中向后导航(类似于在 Activity 中向后导航)。
您可以像这样从 FragmentManager 获取 FragmentTransaction 的实例:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
每个事务都是您要同时执行的一组更改。您可以使用 add()、remove() 和 replace() 等方法设置要对给定事务执行的所有更改。然后,要将事务应用到活动,您必须调用 commit()。
但是,在调用 commit() 之前,您可能需要调用 addToBackStack(),以便将事务添加到片段事务的回栈。这个后退堆栈由活动管理,并允许用户通过按下后退按钮返回到之前的片段状态。