android - 如何在方向更改后重新创建传递给 DialogFragment 的监听器?

标签 android

我有一个 DialogFragment,它通过我在创建时传递给它的 listener 来完成一些工作。 Listener 是一个 Fragment 实例,它实现了所需的接口(interface)。一切都很好,但在方向改变时,一切都在重新创建,我缺少 listener,所以只是碰到 NullPointeException。如何处理这种情况?如果方向发生变化,我应该关闭 DialogFragment 吗?我认为用户不会喜欢这种行为。所以我需要重新创建一个 listener...但是怎么做呢?

最佳答案

为什么不使用Fragment#setTargetFragment 方法。像这样

public class Fragment1 extends Fragment {
    ...
    public void createFragment2(){
        final Fragment dialogFragment = new MyDialogFragment();
        dialogFragment.setTargetFragment(this);
        dialogFragment.show();
    }
}


public class Fragment2 extends DialogFragment{
    ...
    public void onEvent(){
        ((Fragment1)getTargetFragment()).onEvent();
    }
}

关于android - 如何在方向更改后重新创建传递给 DialogFragment 的监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11568967/

相关文章:

android - 如果在 Android 中连接 BLE 设备失败,如何通知用户?

android - 在键盘文本后面获取灰色补丁?

android - 两列布局,第一列 wrap_content,第二列 fill_parent

java - 使用多部分形式改造上传图像但不获取文件路径

Android:使用 BitmapFactory.decodeStream(...) 和 Assets 文件夹时 PNG 透明度失败

java - 在Android中使用ArrayAdaptor时,数据不显示

android - 除了 SQLiteOpenHelper 之外,是否有框架/库可以轻松管理 Android 上的数据库?

android - 使用辅助服务修改另一个应用程序的 View 层次结构

Android:JSONArray 解析问题

android - 为什么我需要 android.permission.ACCESS_CHECKIN_PROPERTIES