android - 如何让 Fragment 自行移除,即它相当于 finish()?

标签 android

我正在使用兼容性库将应用转换为使用 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/

相关文章:

android - 在 JSON ListView 中重复相同的数据

java - 如何将listview中的textview传回php

android - Gradle 任务完成后设置 Android versionCode

java - android中实现AsyncTask和GridView的Fragment

Android:翻译动画后按钮不起作用

java - 替换 fragment 无法正常工作

Android - Oauth2、AccountManager 和 Google : retrieve profile data

android - PhoneGap + jQuery 安卓应用; ajax 请求在浏览器中运行,但不在手机或模拟器中运行

Android Intent 传递 parcelable 对象与传递 Json 字符串

Android Studio 使用具有相同包名的库和项目