只是爲了闡明我在問什麼:在調用OnStop()/ OnPause()/編輯文字OnClick()。儘管標題看起來像這樣,但這不是重複的:How to stop displaying message from Toast when Application is closed?(對不起,我找不到我更好的標題)如何在應用程序關閉/鍵盤打開之前停止顯示烤麪包(不與鍵盤佈局和主頁重疊)
所以我不問如何關閉烤麪包,但我怎樣才能更新烤麪包在完成應用程序之前關閉。
舉一個例子,當你刪除一個設置的鬧鐘時,我的聯繫人5(4.4.4)的本地鬧鐘會顯示一個通知。如果關閉/最小化應用程序,則關閉烤麪包,然後關閉/最小化應用程序。我會知道一個允許我這樣做的代碼。
這是我的示例代碼:
public class MainActivity extends Activity {
private Toast toast;
private Button buttonClick;
private EditText editTextClick;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonClick = (Button) findViewById(R.id.buttonClick);
editTextClick = (EditText) findViewById(R.id.editTextClick);
buttonClick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (toast != null) {
toast.cancel();
}
toast = Toast.makeText(this, "This might close before the app stop", Toast.LENGTH_SHORT);
toast.show();
}
});
editTextClick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
toast = Toast.makeText(this, "This might close before the keyboard open", Toast.LENGTH_SHORT);
toast.show();
if (toast != null) {
toast.cancel();
}
}
});
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
if (toast != null) {
toast.cancel();
}
super.onStop();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
if (toast != null) {
toast.cancel(); // This close toast when stop called
}
super.onPause();
}
}
我試圖關閉的Toast通知編輯文本被點擊過一次。但它首先打開鍵盤(與烤麪包和鍵盤重疊一段時間),而不是關閉烤麪包。
當我關閉應用程序或備用應用程序時,情況也是如此。重疊其他佈局後,吐司消失。
我已經嘗試使用Thread.sleep(1000);
(在try-catch子句中)和if(toast != null) { toast.cancel(); }
之後,但不會更改任何內容。
我可以在這個示例代碼中做什麼來使它關閉烤麪包然後做其他事情(如打開鍵盤,關閉應用程序,顯示最近的應用程序等)。