私のアプリではAlertDialog
、カスタム ビューで を使用しています。このビューには、いくつEditText
かの とその他のものが含まれています。EditText
必要な機能を実行するにアタッチされたリスナーがいくつかあります。
ダイアログのボタンをクリックすると、sに入力されたデータに対していくつかの検証を実行し、データが無効な場合はEditText
別の検証を表示します。AlertDialog
その(2番目の)ダイアログが閉じられたら、(カスタムビューで)メインダイアログに残りたいのですが、何らかの理由で、2番目のダイアログが表示される前にそのダイアログが閉じられます。2 番目のダイアログの下で元の (カスタム ビュー) ダイアログを開いたままにしておくにはどうすればよいですか?
これが私の(簡略化された)コードです:
final EntryPanel panel = new EntryPanel(OrderActivity.this);
AlertDialog dlg = new AlertDialog.Builder(OrderActivity.this)
.setCancelable(true)
.setView(panel)
.setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final int id = pePanel.getProductId();
if(!isValidProduct(id)) {
new AlertDialog.Builder(OrderActivity.this)
.setMessage(R.string.error_unknown_product)
.setCancelable(true)
.setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dlg2, int which) {
dlg2.cancel();
}
})
.show();
}
else {
processProductEntry(id);
dialog.dismiss();
}
}
})
.setNegativeButton(R.string.button_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).show();