2012-04-18 109 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