繁体   English   中英

在尝试捕获中运行Toast时Android应用程序崩溃

[英]Android app crashing when toast is run in try catch

我正在创建一个具有登录屏幕的android应用。 我所做的是,每当用户单击“提交”按钮时,它将运行进度对话框。 然后调用一个新线程以验证登录名。 当我尝试在登录内的函数上运行Toast时,应用突然崩溃。 我所做的是这样的:

    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();

}

但是由于某种原因, 只有当我添加了吐司的代码时 ,应用程序才会突然崩溃。 我的代码有什么问题,为什么只有当我使用吐司时它才崩溃?

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

可以在runOnUiThread()中放入吐司吗?

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

暂无
暂无

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

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