我有一个可能会显示一些 DialogFragments 的活动。此活动需要从对话框中获取响应。我使用监听器。活动中:
ProgressMarkDialog dialog = new ProgressMarkDialog();
dialog.setOnProgressMarkSelected(new ProgressMarkDialog.OnProgressMarkSelected() {
@Override
public void onSelect(final int a) {
//some code..
}
});
在对话框中:
public void setOnProgressMarkSelected(OnProgressMarkSelected onProgressMarkSelected) {
this.onProgressMarkSelected = onProgressMarkSelected;
}
此代码工作正常,直到活动以某种方式被破坏,但对话框仍然打开。由于 onProgressMarkSelected 为空,程序将因 NullPointerException 而崩溃。
我可以用
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
onProgressMarkSelected = (OnProgressMarkSelected) activity;
}
并在活动中实现接口。但是如果我的 DialogFragment 很少,这意味着我应该在 Activity 中实现很少的接口,并且代码会非常混乱。这种情况下的 Android 最佳实践是什么?