我有一个只使用一个活动的应用程序。在里面,我加载了一个带有 recyclerview 的片段。recyclerview 中的每个项目都是一个对话框片段。用户可以更改项目,因此当对话框关闭时,recyclerview 会更新。
我现在遇到的问题是,当应用程序在对话框处于活动状态时旋转时,recyclerview 在对话框关闭后不会更新。
我的对话框在被销毁时会与应用程序中的所有内容一起重新创建,因此我怀疑 dismisslistener 在重新创建时会被销毁。
该对话框公开了一种方法来设置 dismisslistener,然后覆盖该事件以检查是否已设置。
public void setOnDismissListener(DialogInterface.OnDismissListener
onDismissListener) {
this.onDismissListener = onDismissListener;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
}
然后我在onViewBindHolderrecyclerview中设置了一个 dismisslistener
editor.setOnDismissListener(dialog -> {
recycler.getAdapter().notifyDataSetChanged();
}
我不确定为什么会发生这种情况,但似乎在更改方向并重新创建所有内容之后,recyclerview 从未更新过。我发现该方法仍然被调用,因为在 ondismisslistener 内部是另一个函数,它更新了另一个视图,getView().findViewById()然后由于返回 null 而使应用程序崩溃getView。
我在这里找不到关于此的任何其他帖子。
有谁知道我如何修复 dismisslistener 或任何其他等待 dialogfragment 关闭的方法?
月关宝盒
慕的地10843
相关分类