0

如果未检测到网络连接,我有以下代码向用户显示一个对话框。

private void createNoNetworkDialog() {

    LayoutInflater inflater = LayoutInflater.from(this);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    View view = inflater.inflate(R.layout.offline_mode_dialog,null);
    builder.setView(view);
    builder.show();

}

此对话框中有两个按钮,它们具有为其 onClick 操作定义的方法。我想在按下这些按钮中的任何一个后关闭对话框弹出窗口。有任何想法吗??

4

2 回答 2

1

是的,dismiss()Listener's调用,onClick因为DialogInterface引用已通过,这允许解雇。

例如

builder.setPositiveButton ("Yes", new DialogInterface.OnClickListener()
                             {
  public void onClick (DialogInterface dialog, int which)
  {
    //do stuff beforehand
    dialog.dismiss();
  }
});

或者,如果您的按钮在布局内,则显示对话框并保留对它的引用 ( final AlertDialog dialog = builder.show())。然后使用dialog.findViewById()找到相应的按钮。使用您持有的对话框引用分配一个法线View.OnClickListener并在其中调用。dismiss()

于 2013-01-30T16:55:30.753 回答
0

试试这个,我正在使用自定义布局,它对我有用。初始化Button custon_dialog.findViewById()然后写入OncliclListner()。它会工作

    final Dialog custon_dialog = new Dialog(Login.this);
            custon_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            custon_dialog.setContentView(R.layout.forget_custom_dialog);
            custon_dialog.setCancelable(true);
         Button submit_Btn = (Button) custon_dialog
                    .findViewById(R.id.submit);
        Button cancel_Btn = (Button) custon_dialog
                    .findViewById(R.id.cancel);
       submit_Btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
      //do your stuf
                        }

            });
        cancel_Btn.setOnClickListener(new OnClickListener() {

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

            });
        custon_dialog.show();
        }
于 2013-01-30T16:57:28.667 回答