【问题标题】:Android fragment transaction listenerAndroid 片段事务监听器
【发布时间】:2016-10-11 10:43:57
【问题描述】:

我需要在片段事务执行时进行监听,例如,当我用另一个片段替换片段时,无需调用 addToBackStack()。 FragmentManager 类提供了一个 addOnBackStackChangedListener 回调,但是当我执行片段替换而不调用 addToBackStack 时,它不会被执行。

编辑:监听操作在一个只能访问活动实例及其片段管理器的类中执行。

【问题讨论】:

  • 你需要这个有什么目的?
  • 对于在片段被销毁时执行某些操作的库。

标签: android android-fragments fragmenttransaction


【解决方案1】:

您可以对所有片段使用基类。然后你可以覆盖 onDetach() 方法。例如

public class BaseFragment extends Fragment {

@Override
public void onDetach() {
   // run code that needed by your library. e.g.
    if (getActivity() != null && getActivity() instanceof MainActivity) {
    ((MainActivity)getActivity()).someMethodToDetectOnDetach();
    }
    super.onDetach();
}

然后像这样从 BaseFragment 扩展你的片段

public class MyFragment extends BaseFragment {
// .....
}

【讨论】:

  • 您可以在 onAttach(Context context); 中使用相同的行为;方法(也许会更好)
  • 是的,我可以这样做,但是我正在构建一个库项目,我不想强​​制执行那种事情,比如使用基类。但我认为没有其他方法可以做到这一点。
【解决方案2】:

你可以使用 Fragment 的 onAttach() 方法。

【讨论】:

  • 片段事务的监听操作在一个类中执行,该类只能访问一个活动实例及其FragmentManager。我将编辑我的问题以澄清。
  • 你有没有想过这个问题?我刚刚尝试了一个 onBackStackChange 监听器,但即使在使用 FragmentManager 设置它之后它也不会被调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多