我正在使用兼容性库将应用转换为使用 fragment 。
现在我有许多 Activity (A B C D),它们相互链接,D 有一个按钮“OK”,当按下时调用完成,然后通过 onActivityResult()
冒泡以另外破坏 C 和 B .
对于我之前的 Honycomb fragment 版本,每个 Activity 实际上都是 fragment Af Bf Cf Df 的包装器。所有的activity都是通过startActivityForResult()
和onActivityResult()
启动的,每个 fragment 内都可以愉快地调用getActivity().finish()
我遇到的问题是在我的 Honeycomb 版本中,我只有一个 Activity A,并且使用 FragmentManager
加载 fragment Bf、Cf、Df。
我不明白的是,当按下“确定”以删除 fragment Df、Cf 和 Bf 时,在 Df 中要做什么?
我尝试让 fragment 从堆栈中弹出,但这导致了异常。 onActivityResult()
没用,因为我没有使用 startActivityForResult()
加载 fragment 。
我是不是在想这个完全错误的方式?我是否应该实现某种与父 fragment 或 Activity 通信的监听器,以便使用事务管理器进行弹出?
最佳答案
虽然它可能不是最好的方法,但我能想到的最接近的等效方法是支持/兼容性库
getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
或
getActivity().getFragmentManager().beginTransaction().remove(this).commit();
否则。
此外,您还可以使用 backstack 并弹出它。但是请记住, fragment 可能不在后台堆栈上(取决于将它放在那里的 fragment 事务......)或者它可能不是最后一个进入堆栈的 fragment ,因此弹出堆栈可能会删除错误的......
关于android - 如何让 Fragment 自行移除,即它相当于 finish()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901298/