如何在android中创建模态对话框

时间:2013-08-22 04:50:16

标签: android modal-dialog android-ui

我想为我的应用程序创建模态对话框。

所以当模态对话框打开时,其他活动被阻止。没有像按下后退按钮或按下主页那样的事件。

并在该对话框中放置两个选项按钮取消并确定。

谢谢...

4 个答案:

答案 0 :(得分:28)

Android中有多种Dialogs。请看Dialogs。我想你要找的是AlertDialog之类的东西。这是您如何在BackPress按钮上实施的示例。

@Override
public void onBackPressed() {
    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Do you want to logout?");
    // alert.setMessage("Message");

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            //Your action here
        }
    });

    alert.setNegativeButton("Cancel",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
            }
        });

    alert.show();

}

答案 1 :(得分:9)

使用可以使用 setCancellable(假); setCanceledOnTouchOutside(假); 对于对话框本身,应该停止该对话框从BACK关闭并通过点击对话框外部。

您无法覆盖HOME按钮。

答案 2 :(得分:6)

试试这个::

您需要创建要在弹出窗口中显示的布局。你可以创建布局XML并像这样使用它:

LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);  
            View layout = layoutInflater.inflate(R.layout.new_popup_layout, null);  
            final PopupWindow popupWindow = new PopupWindow(
                    layout, 
                       LayoutParams.WRAP_CONTENT,  
                             LayoutParams.WRAP_CONTENT);

您还可以提供按钮的点击事件,如下所示:

ImageButton btnChoose = (ImageButton) layout.findViewById(R.id.btnChoose);
            btnChoose.setOnClickListener(new OnClickListener()  {

                @Override
                public void onClick(View v) {
}
});

并显示如下弹出窗口:在这里你想在按钮点击时显示这个,然后按钮视图就会出现。

 popupWindow.showAtLocation(anyview,Gravity.CENTER, 0, 0);

答案 3 :(得分:5)

试试如下:

 AlertDialog.Builder builder = new AlertDialog.Builder(this);
 builder.setMessage("Are you sure you want to exit?")
  .setCancelable(false)
   .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int id) {
        MyActivity.this.finish();
   }
 })
 .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int id) {
        dialog.cancel();
   }
});
AlertDialog alert = builder.create();

对于Home Key事件:

不,在Android中无法获取Home键事件。 从Home键代码的文档: http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME

  

public static final int KEYCODE_HOME

     

密钥代码常量:Home键。这个   key由框架处理,永远不会传递给   应用