Android取消了自定义布局的alertDialog

时间:2015-08-28 15:42:15

标签: android alertdialog

我正在创建一个带有自定义布局的警告对话框,我想在按下其中一个布局按钮时取消该对话框。

            LayoutInflater layoutInflater = LayoutInflater.from(GroupAdminOptions.this);
            View alertView = layoutInflater.inflate(R.layout.change_group_name, null);

            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(GroupAdminOptions.
                    this);
            final EditText userInput = (EditText) alertView.findViewById(R.id.editTextUserInput);
            Button okButton = (Button) alertView.findViewById(R.id.okButton);
            Button cancelButton = (Button) alertView.findViewById(R.id.cancelButton);
            okButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.d("QQQ","" + userInput.getText());
                }
            });
            cancelButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.d("QQQ","cancel");
                }
            });
            alertDialogBuilder.setView(alertView);
            AlertDialog alertDialog = alertDialogBuilder.create();
            alertDialog.show();

按下取消按钮时可以取消alertDialog?

3 个答案:

答案 0 :(得分:2)

您必须将AlertDialog作为全局变量,然后您可以在AlertDialog方法中使用onClick()然后将其解除。

在将alertDialog声明为全局变量后尝试此代码。

cancelButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.d("QQQ","cancel");
                    alertDialog.dismiss();
                }
            });

我希望它有所帮助!

答案 1 :(得分:1)

在调用alertDialogBu​​ilder.show()之后尝试定义OnClickListeners,然后可以从它们内部调用alertDialog.dismiss()。 E.g。

        final AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();

        Button okButton = (Button) alertView.findViewById(R.id.okButton);            
        okButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("QQQ","" + userInput.getText());
                alertDialog.dismiss();
            }
        });

        Button cancelButton = (Button) alertView.findViewById(R.id.cancelButton);
        cancelButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("QQQ","cancel");
                alertDialog.dismiss();
            }
        });

答案 2 :(得分:0)

  

按下取消按钮时可以取消alertDialog?

是的,您需要在dialog.dismiss()

中致电cancelButton.setOnClickListener(...)