在onSaveInstanceState中保存接口(侦听器)

Tar_Tw45

SaveInstanceState

对于Integer,Long,String等数据很好,我只是将其放入包中,并在再次调用onCreateView时将其取回。但是我的片段也有如下的监听器,

public class SomeFragment extends Fragment {
    public interface SomeListener {
        public void onStartDoingSomething(Object whatItIsDoing, Date when);
        public void onDoneDoingTheThing(Object whatItDid, boolean result);
    }

    private SomeFragmentListener listener;
    private String[] args;

    public static SomeFragment getInstance(SomeListener _listener, String... _args) {
        SomeFragment sf = new SomeFragment();
        sf.listener = _listener
        sf.args = _args

        return sf;
    }

    // rest of the class

    // the example of where do I invoke the listener are
    // - onSetVisibilityHint
    // - When AsyncTask is done
    // - successfully download JSON
    // etc.
} 

我怎样才能让听众捆绑在一起,以便以后可以找回它?

Tar_Tw45

最近,我刚刚找到了执行此操作的正确方法,并希望与以后分享该主题的读者分享。

保存片段侦听器的正确方法不是保存片段,而是在片段附加到活动时从活动发出请求。

public class TheFragment extends Fragment {
    private TheFragmentListener listener;

    @Override
    public void onAttach(Context context) {
        if (context instanceof TheFragmentContainer) {
            listener = ((TheFragmentContainer) context).onRequestListener();
        }
    }

    public void theMethod() {
        // do some task
        if (listener != null) {
            listener.onSomethingHappen();
        }
    }

    public interface TheFragmentContainer {
        public TheFragmentListener onRequestListener();
    }

    public interface TheFragmentListener {
        public void onSomethingHappen();
    }
}
  • 当片段附加到活动时,我们检查活动是否实现TheFragmentContainer
  • 如果活动确实存在,请从活动中请求侦听器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

android侦听器接口变量null

来自分类Dev

我的TCP侦听器侦听哪个网络接口

来自分类Dev

我的TCP侦听器侦听哪个网络接口

来自分类Dev

在onSaveInstanceState中保存什么?

来自分类Dev

如何在片段中实现侦听器接口?

来自分类Dev

设置侦听器接口时发生ClassCastException

来自分类Dev

DatePickerDialog侦听器

来自分类Dev

Vuejs侦听器

来自分类Dev

DatePickerDialog侦听器

来自分类Dev

侦听器JavaFX

来自分类Dev

如何在从片段打开的自定义对话框中保留侦听器?

来自分类Dev

如何在onSaveInstanceState中保存JSONObject?

来自分类Dev

如何在onSaveInstanceState中保存JSONObject?

来自分类Dev

是否需要在分离时将Fragment接口侦听器设置为null?

来自分类Dev

点击侦听器内部的异步任务将对接口的引用传递给

来自分类Dev

为什么Android Studio中的侦听器接口的默认实现包含可为空的父级?

来自分类Dev

如何在Android中将接口用作响应侦听器?

来自分类Dev

Android RecyclerView如何设置单击侦听器-将类转换为接口

来自分类Dev

使用侦听器时类内部嵌套接口的优势

来自分类Dev

RecyclerView 中的自定义列表项侦听器接口不响应点击

来自分类Dev

从父片段到选项卡片段的接口侦听器不起作用

来自分类Dev

如何使用 Swift 协议功能作为 Android 接口侦听器实现?

来自分类Dev

动作侦听器中的动作侦听器错误

来自分类Dev

从侦听器列表中删除侦听器

来自分类Dev

Java侦听器-不侦听

来自分类Dev

复合的关键侦听器?

来自分类Dev

使用WeakReferenced侦听器

来自分类Dev

DatePickerDialog +/-按钮的侦听器

来自分类Dev

侦听器的对象标识

Related 相关文章

热门标签

归档