【发布时间】:2018-01-13 18:13:29
【问题描述】:
直升机,
我有以下代码:
EventPopup.java
class EventPopup extends Dialog {
private boolean delete;
private boolean edit;
private boolean editall;
private ReadEvent event;
... }
DayFragment.java(这是一个片段)
final EventPopup eventpopup = new EventPopup(getContext(), readevent);
eventpopup.show();
eventpopup.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
if(eventpopup.getDelete()) {
((MainActivity) getActivity()).refreshViewPager();
} else if (eventpopup.getEdit()) {
((MainActivity) getActivity()).doEditEvent(readevent, eventpopup.getEditAll());
}
}
});
MainActivity.java:
public void refreshViewPager() {
doubleViewPager.getAdapter().notifyDataSetChanged();
}
为什么这一行有时会在某些设备上给出 NullPointerException(在其他设备上不会)?:
((MainActivity) getActivity()).refreshViewPager();
错误信息是:
java.lang.NullPointerException:
在 de.ubik.terminkalender.DayFragment$8$1.onDismiss (DayFragment.java:1378)
在 android.app.Dialog$ListenersHandler.handleMessage (Dialog.java:1749)
在 android.os.Handler.dispatchMessage (Handler.java:102)
在 android.os.Looper.loop (Looper.java:154)
在 android.app.ActivityThread.main (ActivityThread.java:6692)
在 java.lang.reflect.Method.invoke(本机方法)
在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1468)
在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1358)
我有以下结构:MainActivity (with viewpager) -> DayFragment (as a Fragment) -> Dialog.当我关闭对话框时,我想检查对话框中是否单击了按钮。单击后,在 MainActivity 中刷新 viewpager。如何实现?
【问题讨论】:
标签: java android nullpointerexception