繁体   English   中英

在Activity,NullPointerException上的finish()时使用ProgressDialog

[英]Using ProgressDialog when finish() on Activity, NullPointerException

我要注册一个简单的后台任务,为用户显示进度对话框。 问题在于,我相信我会收到NullPointerException ,因为在意图中启动的第二个活动是以某种方式在dialogProgressHide();之前被调用的dialogProgressHide(); 方法,即使该代码在代码中排在第一位,因此上下文不同且进度返回null导致错误。

book.saveInBackground(new SaveCallback()
                {

                    @Override
                    public void done(ParseException e) {
                        if (e == null) 
                        {

                            dialogProgressHide();
                            Toast.makeText(getApplicationContext(), "Your book was posted correctly!", Toast.LENGTH_LONG).show();
                            finish();
                        } 
                        else 
                        {

                            Toast.makeText(getApplicationContext(), "An error has occured: " + e +  "\n" + "Please try again!", Toast.LENGTH_LONG).show();
                            dialogProgressHide();
                        }
                    }
                });

我可能是错的,但这对我来说很有意义,问题是我该如何解决? 我只是希望对话框在完成活动之前消失,因此当上下文中不再有进度时,它不会尝试进行操作。

如果需要,这是对话方法:

  private void dialogProgressShow() {
            mDialog = new ProgressDialog(this);
            mDialog.setMessage("One moment please while we post your book.");
            mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

            mDialog.show();
        }
        private void dialogProgressHide() {
            if (mDialog.isShowing())
            {
                mDialog.dismiss();
                mDialog = null;
            }
        }
    }

LOGCAT:

03-25 17:12:44.862: E/AndroidRuntime(16528): FATAL EXCEPTION: main
03-25 17:12:44.862: E/AndroidRuntime(16528): Process: com.jameswilson.booksale, PID: 16528
03-25 17:12:44.862: E/AndroidRuntime(16528): java.lang.NullPointerException
03-25 17:12:44.862: E/AndroidRuntime(16528):    at com.jameswilson.booksale.PostBookActivity.dialogProgressHide(PostBookActivity.java:255)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at com.jameswilson.booksale.PostBookActivity.access$1(PostBookActivity.java:254)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at com.jameswilson.booksale.PostBookActivity$2$1.done(PostBookActivity.java:144)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at com.parse.SaveCallback.internalDone(SaveCallback.java:39)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at com.parse.SaveCallback.internalDone(SaveCallback.java:27)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at com.parse.Parse$6$1.run(Parse.java:846)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at android.os.Handler.handleCallback(Handler.java:733)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at android.os.Handler.dispatchMessage(Handler.java:95)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at android.os.Looper.loop(Looper.java:136)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at android.app.ActivityThread.main(ActivityThread.java:5017)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at java.lang.reflect.Method.invokeNative(Native Method)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at java.lang.reflect.Method.invoke(Method.java:515)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-25 17:12:44.862: E/AndroidRuntime(16528):    at dalvik.system.NativeStart.main(Native Method)

在尝试关闭对话框引用之前,先检查它是否为空

private void dialogProgressHide() {
    if (mDialog != null && mDialog.isShowing())
    {
        mDialog.dismiss();
        mDialog = null;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM