2012-04-18 143 views
0

我的Android應用程序使用 AlertDialog.Builder.setMessage("OK").show(); 但該面板不會自動隱藏。用戶必須點擊手機上的返回鍵。 如何顯示一條消息三秒鐘,然後自動隱藏它?如何自動隱藏AlertDialog

回答

0

嘗試使用吐司類:

Toast.makeText(this, "OK", Toast.LENGTH_LONG).show();

+0

謝謝,麪包也可以實現,但我希望知道AlertDialog.Builder或吐司有show()方法,但爲什麼沒有隱藏()方法^^ – zhangbin 2012-04-18 04:52:37

+0

'AlertDialog'確實有'cancel()'方法,也許你可以用一個定時器來隱藏對話框。 – Sam 2012-04-18 05:00:33

-1
Try Thread to show alert for some time.... 

private boolean mActive = true; 
private final int SPLASH_DISPLAY_LENGHT = 2000; 

Thread splashTread = new Thread() { 
      @Override 
      public void run() { 
       try { 
        int waited = 0; 
        while (mActive && (waited < SPLASH_DISPLAY_LENGHT)) { 
         sleep(70); 

         waited += 70; 

        } 
//set Alert dialog here 
        AlertDialog.Builder.setMessage("OK").show(); 

       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     }; 
     splashTread.start(); 
+1

將不起作用,因爲'show'必須在UI線程上調用。另外,在 – njzk2 2012-04-18 08:43:29

1

利用消息處理程序來隱藏自己的對話框。試試這個..

AlertDialog test_ok = null; 
android.os.Handler messagHandler = null; 
Message msg = new Message(); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    test_ok = new AlertDialog.Builder(this).setMessage("ok").create(); 
    test_ok.show(); 

    messagHandler = new android.os.Handler() { 
     public void handleMessage(android.os.Message msg) { 
      switch (msg.what) { 
       case 1: 
        test_ok.dismiss(); 
        break; 
      } 
     }; 
    }; 

    msg.what = 1; 
    messagHandler.sendMessageDelayed(msg, 4000); 
} 
+0

這個問題中提出的問題相反,請確保測試是在解僱它之前仍然顯示test_ok,否則它會崩潰 – njzk2 2012-04-18 08:42:29