簡體   English   中英

在警報對話框中的驗證單選按鈕中顯示吐司時,如何顯示警報對話框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM