Android 带有LinearLayout的AlertDialog不应在单击按钮时关闭
我只希望我的AlertDialog在满足某些条件且给定的名称和姓氏有效时被取消,否则它应该始终位于父视图的顶部。我的代码是:Android 带有LinearLayout的AlertDialog不应在单击按钮时关闭,android,Android,我只希望我的AlertDialog在满足某些条件且给定的名称和姓氏有效时被取消,否则它应该始终位于父视图的顶部。我的代码是: final AlertDialog.Builder alert = new AlertDialog.Builder(this); final TextView instructions = new TextView(this); instructions.setText(R.string.alert_enter_data); final E
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
final TextView instructions = new TextView(this);
instructions.setText(R.string.alert_enter_data);
final EditText name = new EditText(this);
name.setHint(R.string.name);
final EditText surname = new EditText(this);
surname.setHint(R.string.surname);
LinearLayout ll=new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.addView(instructions);
ll.addView(name);
ll.addView(surname);
alert.setView(ll);
alert.setNeutralButton(R.string.enter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String name_txt = name.getText().toString();
String surname_txt = surname.getText().toString();
if ((name_txt.length() > 1) && (surname_txt.length() > 1)) {
dialog.dismiss();
}
}
});
final AlertDialog alert_dialog = alert.create();
alert_dialog.setCanceledOnTouchOutside(false);
alert_dialog.show();
使用此代码,无论输入文本如何,按下按钮时AlertDialog都会消失。然后我试了一下:
alert_dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button b = alert.getButton(AlertDialog.BUTTON_POSITIVE);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name_txt = name.getText().toString();
String surname_txt = surname.getText().toString();
String email_txt = email.getText().toString();
String cellphone_txt = cellphone.getText().toString();
String postcode_txt = postcode.getText().toString();
if ((name_txt.length() > 1) && (surname_txt.length() > 1) && (email_txt.length() > 4)) {
if (debug_mode) {Log.i(TAG,"clause 1");}
String data_to_upload = name_txt + ", " + surname_txt + ", " + email_txt + ", "+ cellphone_txt + ", " + postcode_txt + "\n";
// upload_to_github(data_to_upload);
alert_dialog.dismiss();
}
}
});
}
});
但这样我就一点也不需要扣子了。“警报”对话框仅包含编辑文本字段
alert.setNeutralButton(R.string.enter, new DialogInterface.OnClickListener() {
及
两者都是不同的按钮
试一试
按钮b=alert.GetButtonAllertDialog.Button\u中性
你读过这里吗。您需要使用dialog.GetButtonAllertDialog.button\u POSITIVE.setOnClickListener….覆盖按钮侦听器,以防止AlertDialog在选择单击时自动关闭。。。。您可以删除showListener,因为它不是必需的,请小心,在更改按钮Listener之前,您需要创建并显示对话框。这是我在第二个代码片段中所做的,但这样我就根本没有按钮了-我想是因为我使用的是LinearLayout,但我在这里迷路了。
Button b = alert.getButton(AlertDialog.BUTTON_POSITIVE);