我有一个方法test(),它使用以下Runnable和Handler decleration在主线程中每3秒运行一次:
private Runnable _checker = new Runnable() {
@Override
public void run() {
try {
test();
} finally {
if (!_stopTest) {
_testHandler.postDelayed(_checker, 3000);
}
}
}
};
此toast消息在test()方法期间在主线程上运行:
Toast.makeText(getActivity(), "Recalculating...", Toast.LENGTH_SHORT).show();
以异常结束:
04-02 09:56:44.229 31232-31232/com.app E/UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference at android.widget.Toast.<init>(Toast.java:105) at android.widget.Toast.makeText(Toast.java:262) at com.BaseSupportFragment.test(BaseSupportFragment.java:916)
在onBackPressed期间发生异常,我覆盖它以删除片段容器(其中包含应显示失败的toast消息的片段)。
有人知道这里发生了什么吗?
答案 0 :(得分:1)
在onBackPressed期间发生异常。
下次调用null
时会返回onBackPress()
,因为您的片段当前未附加到任何活动。因此崩溃发生了。
在_testHandler.removeCallbacks(_checker);
中,你必须取消预定的可运行程序:
{{1}}