在try catch中运行toast时Android应用程序崩溃

时间:2014-10-22 01:10:11

标签: java android try-catch android-toast

我正在创建一个具有登录屏幕的Android应用程序。我所做的是每当用户点击提交按钮时,它就会运行progressdialog。然后调用一个新线程来验证登录。当我尝试在登录内的函数上运行吐司时,应用程序突然崩溃。我用它做的是:

    loginButton.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
               dialog = ProgressDialog.show(MainActivity.this, "", 
                        "Validating user...", true);
            new Thread(new Runnable(){
                public void run(){


                    login();
                }
            }).start();
        }

    });

然后我的登录功能就是:

void login(){

try{
//some code
} catch(Exception e){

dialog.dismiss();
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

}

但出于某种原因,一旦进入catch功能,只有当我添加toast 的代码时,app才会突然崩溃。我的代码有什么问题,为什么它只在我使用祝酒词时崩溃?

2 个答案:

答案 0 :(得分:1)

吐司在另一个工作线程中?

你能把吐司放在runOnUiThread()吗?

答案 1 :(得分:0)

您是否尝试过调试代码?当您从线程调用它时,您可能会从getApplicationContext()获取空指针。在某处声明一个变量上下文并使用该变量来制作Toast(如果需要)。