无法在Android上捕获java.lang.NullPointerException

时间:2012-06-28 11:18:58

标签: android exception-handling progressdialog

错误:

    java.lang.NullPointerException
    at com.lala.Home.hideLoadinganimation(Home.java:969)
    at com.lala.Home.access$4(Home.java:967)
    at com.lala.Home$17.onFinish(Home.java:892)
    at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage   (AsyncHttpResponseHandler.java:180)
    at com.loopj.android.http.AsyncHttpResponseHandler$1.handleMessage(AsyncHttpResponseHandler.java:86)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3687)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
    at dalvik.system.NativeStart.main(Native Method)

我知道为什么会发生这种情况,不知何故用户隐藏/退出或转到其他应用程序,就像我的应用程序已完成从服务器加载数据并即将隐藏进度对话框一样。

我试图在下面的块中捕获它,但它不起作用。我错过了什么?

   private void hideLoadinganimation(boolean asDialog) {
    try {
        if (asDialog) {
            try {
                pDialog.dismiss();
            } catch (Exception e) {
                e.printStackTrace();
                // again, sometimes pDialog is null. I have no idea why as I
                // can't reproduce it.
            }
        } else {
            switcher.showPrevious();
        }
    } catch (Exception ee) {
        ee.printStackTrace();
    }
}

3 个答案:

答案 0 :(得分:1)

我认为您的pDialog为空。

尝试

if(null!=pDialog && pDialog.isshowing()){

      pDialog.dismiss();

}

答案 1 :(得分:1)

更改

  pDialog.dismiss();

if(pDialog!=null)
{
  pDialog.dismiss();
}

但你需要弄清楚为什么它会变为空

答案 2 :(得分:0)

在Dheeresh Singh的评论之后,我去检查了该行并发现错误日志来自旧版本的应用程序。虽然我强制用户在有新版本时进行更新,但有几个用户会绕过它。对不起,麻烦。

我应该花更多时间在上面检查细节。