我正在创建一个带有自定义布局的警告对话框,我想在按下其中一个布局按钮时取消该对话框。
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?
答案 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)
在调用alertDialogBuilder.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(...)