安卓应用程序崩溃,当在尝试catch中运行吐司
我正在创建一个具有登录屏幕的android应用程序。我所做的是,只要用户点击提交按钮,它就会运行一个进度对话框。然后调用一个新线程来验证登录。当我尝试在登录中的函数上运行敬酒时,应用程序突然崩溃。我所做的与它是这样的:安卓应用程序崩溃,当在尝试catch中运行吐司
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()吗?
我刚刚在runOnUiThread()上调用了整个Toast。这是为什么?是因为我把烤面包放到了一个我用来运行登录功能的新线程中? – marchemike 2014-10-22 02:04:21
吐司应显示在UI线程上 – liuzhidong 2014-10-22 02:58:18
你试过调试你的代码吗?您可能从getApplicationContext()获得空指针,因为您正在从您的线程调用它。在某处声明一个变量上下文并使用该变量来做Toast(如果你需要的话)。
你看过异常的LogCat吗? – panini 2014-10-22 01:12:22