Android碎片事务监听器

3

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

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


你需要这个是用来做什么的? - Hank Moody
对于一个在片段销毁时执行某些操作的库。 - Victor Manuel Pineda Murcia
2个回答

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)方法中使用相同的行为(也许会更好)。 - Hank Moody
是的,我可以做到,但我正在构建一个库项目,我不想强制使用这种方式,比如使用基类。但我认为没有其他方法可以做到。 - Victor Manuel Pineda Murcia

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

片段事务的监听操作是在一个类中执行的,该类仅具有访问活动实例及其FragmentManager的权限。我将编辑我的问题以澄清。 - Victor Manuel Pineda Murcia
你解决了这个问题吗?我刚试过一个onBackStackChange监听器,但即使在FragmentManager中设置它,它也从未被调用。 - John Glen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接