[英]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.