我遇到了一個典型的問題,這對我來說似乎很奇怪。細節是這樣的 - 在我的應用程序中的活動,有edittexts和提交按鈕。在編輯文本中填入數據後,用戶可以點擊提交按鈕。點擊提交按鈕後,根據用戶輸入的值,顯示兩個警報對話框中的任何一個。一個是成功,另一個是失敗。即使在解僱之後,警報對話框也會彈出
事情是當用戶輸入無效數據並點擊提交按鈕時,失敗的警報對話框被打開。我在失敗的警報對話框上有一個按鈕(OK),點擊它後我寫了dialog.dismiss();
使其消失,以便用戶可以重新檢查數據並進行修改。但是,如果他改變方向,重新檢查數據時會重新檢查問題,然後即使沒有點擊提交按鈕,失敗的警報對話框也會彈出。請建議。
額外的細節(雖然可能不需要這個問題):在改變方向時,活動被重新創建。因此,我將當前數據保存在onSavedInstanceState()中,並在onCreate()方法中檢索它以設置edittext中的值。一切工作正常,但一旦點擊提交按鈕,相應的警報對話框出現。然後在改變方向後,對話框再次彈出。我確信我寫了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);
}
}
它很好,如果你發佈代碼.. – user370305
@ user370305請查看我添加的代碼片段。 – Kanth
將答案標記爲已接受。 –