2014-10-22 55 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(如果你需要的話)。

相關問題