我遇到了一个典型的问题,对我来说似乎很奇怪。细节是这样的 - 在我的应用程序的活动中,有编辑文本和提交按钮。在edittexts中填写数据后,用户可以点击提交按钮。单击提交按钮后,根据用户输入的值,将显示两个警报对话框中的任何一个。一种是成功,另一种是失败。
问题是当用户输入无效数据并单击提交按钮时,会打开失败的警报对话框。我在失败的警报对话框上有一个按钮(确定),单击它后我写dialog.dismiss();
它使其消失,以便用户可以重新检查数据并可以修改。但问题是在重新检查和修改数据时,如果他改变了方向,那么即使没有单击提交按钮,也会再次弹出失败的警报对话框。请建议。
额外细节(虽然这个问题可能不是必需的):在改变方向时重新创建活动。因此,我将当前数据保存在 onSavedInstanceState() 中并在 onCreate() 方法中检索它以设置编辑文本中的值。一切正常,但是一旦单击提交按钮,就会出现相应的警报对话框。然后在改变方向后,对话框再次弹出。我确定我写了showDialog(1); 在onClick()方法中,但又为什么控制会回到 onClick 并显示该警报对话框,即使没有单击。
protected Dialog onCreateDialog(int id) {
switch(id){
case 0:
return new AlertDialog.Builder(this)
.setMessage("Success!")
.setIcon(R.drawable.success)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
case 1:
return new AlertDialog.Builder(this)
.setMessage("Failed")
.setIcon(R.drawable.failure)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
return;
}
}).show();
}
return null;
}
这是使警报对话框显示的方法。
public void onClick(View v) {
switch (v.getId()) {
//Here there are other cases too.
case R.id.submit:
getEditTexts();
validator();
break;
}
}
public void validator() {
if(generator.receiveVal(0,0,sudo)) {
showDialog(0);
}
else if(!generator.receiveVal(0,0,sudo)) {
showDialog(1);
}
}