私は典型的な問題に遭遇しました、そしてそれは私には奇妙に思えます。詳細は次のようになります-私のアプリのアクティビティには、編集テキストと送信ボタンがあります。編集テキストにデータを入力した後、ユーザーは送信ボタンをクリックできます。[送信]ボタンをクリックすると、ユーザーが入力した値に基づいて、2つのアラートダイアログのいずれかが表示されます。1つは成功で、もう1つは失敗します。
ユーザーが無効なデータを入力して送信ボタンをクリックすると、失敗したアラートダイアログが開きます。失敗したアラートダイアログにボタン(OK)があります。クリックした後dialog.dismiss();
、ユーザーがデータを再確認して変更できるように、ボタン(OK)をクリックして非表示にしました。しかし、問題は、彼が向きを変更した場合にデータを再確認および変更しているときに、送信ボタンをクリックしなくても失敗したアラートダイアログがポップアップすることです。提案してください。
追加の詳細(この問題にはおそらく必要ありませんが):向きを変更している間、アクティビティが再作成されます。そのため、現在のデータをonSavedInstanceState()に保存し、onCreate()メソッドで取得して、edittextsの値を元に戻しています。すべて正常に動作しますが、送信ボタンをクリックすると、それぞれのアラートダイアログが表示されます。次に、向きを変更した後、ダイアログが再びポップアップします。私は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);
}
}