我需要在健康狀況低於20或等於20後顯示「alertDialog」,我在代碼中沒有任何錯誤後每秒鐘健康狀況降低「1」 。問題是「健康」通過邊界/限制應用程序粉碎後,粉碎,我不知道爲什麼會發生這種情況,有沒有人來幫助我呢? 我還確保有是「alertDialog」與布爾的一次演出,但沒有幫助... 感謝諮詢:)計時器結束=應用程序崩潰
代碼:
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Health -= 1;
if (Health <= 20) {
if (!canSeeWarnDialog) {
final AlertDialog alertDialog2 = new AlertDialog.Builder(
MainActivity.this).create();
alertDialog2.setTitle("Im hungry");
alertDialog2.setMessage("The dog health is going low "
+ "\ngive him some food");
alertDialog2.setButton("Got it",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
alertDialog2.cancel();
}
});
alertDialog2.show();
canSeeWarnDialog = true;
return;
}
}
}
}, 1000, 1000);//TimeUnit.SECONDS.toMillis(1));
您無法從非UI線程afaik中顯示對話框。使用不同的方法(可能是:['Handler'](http://developer.android.com/reference/android/os/Handler.html))或者通過'runOnUiThread'啓動一個單獨的可運行程序。 – dst
dst可能有正確的答案。但是,請不要在沒有發佈logcat中的堆棧跟蹤的情況下詢問崩潰 - 如果沒有這些,我們很少會解決它。 –