android Messagebox

Pow*_*fet 6 android

android Messagebox因为完成调用而没有显示,如何让这个函数等待ok然后关闭

public void msbox(String str,String str2)
{
    AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);                      
    dlgAlert.setMessage(str2);
    dlgAlert.setTitle(str);              
    dlgAlert.setPositiveButton("OK", null);
    dlgAlert.setCancelable(true);
    dlgAlert.create().show();
    finish(); 
}
Run Code Online (Sandbox Code Playgroud)

应该是这样的

public void msbox(String str,String str2)
{
    AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);                      
    dlgAlert.setTitle(str); 
    dlgAlert.setMessage(str2); 
    dlgAlert.setPositiveButton("OK",new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
             finish(); 
        }
   });
    dlgAlert.setCancelable(true);
    dlgAlert.create().show();
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*era 6

看到SO问题:AlertDialog不等待输入

当用户在AlertDialog上单击"确定"时,您将必须实现回调(OnClickListener).

这一切都是因为Android对话框不是模态的(非阻塞调用程序线程)

dlgAlert.setPositiveButton("OK",new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // call your code here
    }
});
Run Code Online (Sandbox Code Playgroud)


Pir*_*hah 5

如果你想在android编程中创建一个对话框(消息框,在c#,vb.net等中命名),那么只需复制此代码并将其粘贴到您需要的任何按钮的单击事件中.

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder
    .setTitle("Deleting a Contact No")
    .setMessage("Are you sure?")
    .setIcon(android.R.drawable.ic_dialog_alert)
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
    {
        public void onClick(DialogInterface dialog, int which) 
        {       
               //do some thing here which you need
    }
    });             
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() 
    {
        public void onClick(DialogInterface dialog, int which) 
        {   
        dialog.dismiss();           
        }
    });         
AlertDialog alert = builder.create();
        alert.show();
Run Code Online (Sandbox Code Playgroud)