2014-10-22 43 views
0

我正在创建一个具有登录屏幕的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(); 

} 

但由于某些原因,一旦它进入捕捉功能的应用程序突然崩溃只有当我添加代码为多士。我的代码有什么问题,为什么只有在使用敬酒时才会崩溃?

+0

你看过异常的LogCat吗? – panini 2014-10-22 01:12:22

回答

1

吐司在另一个工作线程?

你可以把烤面包放入runOnUiThread()吗?

+0

我刚刚在runOnUiThread()上调用了整个Toast。这是为什么?是因为我把烤面包放到了一个我用来运行登录功能的新线程中? – marchemike 2014-10-22 02:04:21

+0

吐司应显示在UI线程上 – liuzhidong 2014-10-22 02:58:18

0

你试过调试你的代码吗?您可能从getApplicationContext()获得空指针,因为您正在从您的线程调用它。在某处声明一个变量上下文并使用该变量来做Toast(如果你需要的话)。

相关问题