[英]how to keep alert dialog appear when displaying toast in validation radio button inside that alert dialog
我在“警報”對話框中有一個單選按鈕,然后如果沒有選中的單選按鈕,則要對單選按鈕進行驗證,它將顯示“ Toast”消息,並且必須保留警報對話框。 但是在顯示下面的代碼時,警告對話框將在顯示吐司時關閉。
private void showPopupSubscribe() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final View dialogView = getLayoutInflater().inflate(R.layout.paket_subscribe, null);
builder.setView(dialogView);
builder.setCancelable(false);
builder.setIcon(R.drawable.logo_1);
builder.setTitle(R.string.subscription_package);
final RadioGroup radioGroup = dialogView.findViewById(R.id.rgSubscribe);
builder.setPositiveButton("Next", new DialogInterface.OnClickListener() {
@SuppressLint("ResourceType")
@Override
public void onClick(DialogInterface dialog, int which) {
int selected = radioGroup.getCheckedRadioButtonId();
if (selected == R.id.rbA) {
smsCode = vv0;
} else if (selected == R.id.rbB) {
smsCode = vv1;
} else if (selected == R.id.rbC) {
smsCode = vv2;
} else if (selected == R.id.rbD) {
smsCode = vv3;
}
if (selected == -1 ){
Toast.makeText(CatalogHomeActivity.this, "Pilih paket untuk berlangganan", Toast.LENGTH_SHORT).show();
}else {
pdSubs.show();
doCharging();
dialog.dismiss();
}
}
});
dialog = builder.create();
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog.dismiss();
finish();
}
return true;
}
});
dialog.show();
}
首先刪除setPositiveButton(); 然后在該dissmiss對話框之后設置setpositive按鈕(如果要在setOnShowListener中使用)
...
builder.setPositiveButton(android.R.string.ok, null);
...
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button button = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (selected == -1 ){
Toast.makeText(CatalogHomeActivity.this, "Pilih paket untuk berlangganan", Toast.LENGTH_SHORT).show();
}else {
pdSubs.show();
doCharging();
dialog.dismiss();
}
}
});
}
});
dialog.show();
請在下面嘗試此代碼。
private void showPopupSubscribe() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final View dialogView = getLayoutInflater().inflate(R.layout.paket_subscribe, null);
builder.setView(dialogView);
builder.setCancelable(false);
builder.setIcon(R.drawable.logo_1);
builder.setTitle(R.string.subscription_package);
builder.setPositiveButton("Next", null);
final RadioGroup radioGroup = dialogView.findViewById(R.id.rgSubscribe);
dialog = builder.create();
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog.dismiss();
finish();
}
return true;
}
});
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button button = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int selected = radioGroup.getCheckedRadioButtonId();
if (selected == R.id.rbA) {
smsCode = vv0;
} else if (selected == R.id.rbB) {
smsCode = vv1;
} else if (selected == R.id.rbC) {
smsCode = vv2;
} else if (selected == R.id.rbD) {
smsCode = vv3;
}
if (selected == -1 ){
Toast.makeText(CatalogHomeActivity.this, "Pilih paket untuk berlangganan", Toast.LENGTH_SHORT).show();
}else {
pdSubs.show();
doCharging();
dialog.dismiss();
}
}
});
}
});
dialog.show();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.