android - अलर्ट संवाद में चेक बॉक्स कैसे जोड़ें




checkbox alertdialog (2)

वर्तमान में जब उपयोगकर्ता मेरा ऐप खोलता है तो AlertDialog उनसे पूछता है कि क्या वे प्रो संस्करण में अपग्रेड करना चाहते हैं। मुझे AlertDialog एक CheckBox जोड़ने की आवश्यकता है जो ऐप को ऐप खोलने पर ऐप को AlertDialog नहीं दिखाएगा।

मेरे पास AlertDialog अब क्या है:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(" MY_TEXT");
    builder.setMessage(" MY_TEXT ")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   Uri uri = Uri.parse("market://details?id=MY_APP_PACKAGE");
                   Intent intent = new Intent (Intent.ACTION_VIEW, uri); 
                   startActivity(intent);                          }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
               }
           }).show();

अगर कोई मुझे AlertDialog में AlertDialog जोड़ने का तरीका दिखा सकता है जो ऐप को ऐप AlertDialog पर AlertDialog नहीं दिखाएगा, तो यह बहुत अच्छा होगा। अग्रिम में धन्यवाद!


आप केवल एक आइटम के साथ एक multichoicelist का उपयोग कर सकते हैं:

final boolean checked = new boolean {false};
builder.setMultiChoiceItems(new String[]{"Remember decision}, checked, new DialogInterface.OnMultiChoiceClickListener() {
               @Override
               public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                   checked[i] = b;
               }
           });

फिर एक अलर्ट संवाद बटन के OnClick() में आप चेक checked[0] के मान की जांच कर सकते हैं और उस मूल्य को अपने ऐप के Sharedpreferences :

builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface dialogInterface, int i) {
                       if(checked[0]){
                           SharedPreferences.Editor editor = settings.edit();
                           editor.putBoolean("preferences_never_buy_pro", true);
                           editor.apply();
                       }
                       dialog.cancel();

                   }
               });

इस वरीयता के साथ आप तय कर सकते हैं कि भविष्य में संवाद फिर से दिखाना चाहिए या नहीं।


आपको AlertDialog.Builder ऑब्जेक्ट पर विधि setView(View) विधि का उपयोग करना होगा। यह संदेश क्षेत्र और बटन के बीच पारित View को रखेगा। बस CheckBox साथ एक View को CheckBox और उसमें पास करें। यहां एक उदाहरण दिया गया है:

checkbox.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <CheckBox
        android:id="@+id/checkbox"
        style="?android:attr/textAppearanceMedium"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp" />

</FrameLayout>

आपकी गतिविधि में कोड

View checkBoxView = View.inflate(this, R.layout.checkbox, null);
CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        // Save to shared preferences
    }
});
checkBox.setText("Text to the right of the check box.");

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(" MY_TEXT");
    builder.setMessage(" MY_TEXT ")
           .setView(checkBoxView)
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   Uri uri = Uri.parse("market://details?id=MY_APP_PACKAGE");
                   Intent intent = new Intent (Intent.ACTION_VIEW, uri); 
                   startActivity(intent);                          }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
               }
           }).show();




alertdialog