2014-07-10 43 views
0

只是爲了闡明我在問什麼:在調用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(); }之後,但不會更改任何內容。

我可以在這個示例代碼中做什麼來使它關閉烤麪包然後做其他事情(如打開鍵盤,關閉應用程序,顯示最近的應用程序等)。

回答

0

也許你不打算這樣做,敬酒設計的方式,他們會在給定的時間後消失。

你可能要做的就是在你想關閉的事件上設置Toast持續時間爲零,但要小心,因爲cero會像設置LENGTH_SHORT一樣,你可能必須重寫可能的值,它們應該是毫秒。

嘗試初始化你的麪包OUTSIDE你的onclick監聽器,這可以讓你的onStop和取消的onPause工作,看看這個答案:https://stackoverflow.com/a/17740590/3657704