Android Uyarı İletişim Kutusunda bir liste görünümünü nasıl görüntüleyebilirim?


291

Bir Android uygulamasında, bir AlertDialog'da özel bir liste görünümü görüntülemek istiyorum.

Bunu nasıl yapabilirim?


Sadece dize listesi almak, sonra CharSequence [] dizisi oluşturmak, sonra öğeleri göstermek için AlertDialog.Builder kullanın. İşte anlık görüntü ile en basit örnek feelzdroid.com/2014/12/…
Naruto

Yanıtlar:


498

AlertDialog'da özel listeyi görüntülemek için aşağıdaki kod kullanılır

AlertDialog.Builder builderSingle = new AlertDialog.Builder(DialogActivity.this);
builderSingle.setIcon(R.drawable.ic_launcher);
builderSingle.setTitle("Select One Name:-");

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(DialogActivity.this, android.R.layout.select_dialog_singlechoice);
arrayAdapter.add("Hardik");
arrayAdapter.add("Archit");
arrayAdapter.add("Jignesh");
arrayAdapter.add("Umang");
arrayAdapter.add("Gatti");

builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

builderSingle.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String strName = arrayAdapter.getItem(which);
                AlertDialog.Builder builderInner = new AlertDialog.Builder(DialogActivity.this);
                builderInner.setMessage(strName);
                builderInner.setTitle("Your Selected Item is");
                builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,int which) {
                                dialog.dismiss();
                            }
                        });
                builderInner.show();
            }
        });
builderSingle.show();

bu öğelerin uzun tıklamalarını tespit etme olasılığı var mı? tüm api seviyelerinde çalışan bir açılır menü çözümü için saat arıyorum
wutzebaer

7
@Shvet, show () iletişim kutusunu oluşturur ve gösterirken create () yalnızca onu oluşturur.
htafoya

Bu kurulumu nasıl kullanabilirim ancak listemi sabit kodlamak yerine, kullanıcının zaten sahip olduğu ayrıştırmadan bazı veriler almam gerekiyor.?
stanley santoso

@stanleysantoso kendi bağdaştırıcınızı oluşturun, verilerle doldurun ve ardından alertdialog için bağdaştırıcı olarak ayarlayın: dialogBuilder.setAdapter (MyCustomAdapter); Çalışmalı
CantThinkOfAnything

1
Select_dialog_single_choice düzeni nedir?
ForceFieldsForDoors

254

Belgelere göre, aşağıdakilerle kullanılabilecek üç tür liste vardır AlertDialog:

  1. Geleneksel tek seçenekli liste
  2. Kalıcı tek seçenek listesi (radyo düğmeleri)
  3. Kalıcı çoktan seçmeli liste (onay kutuları)

Aşağıda her birine bir örnek vereceğim.

Geleneksel tek seçenekli liste

Geleneksel tek seçenekli bir liste yapmanın yolu kullanmaktır setItems.

resim açıklamasını buraya girin

Java sürümü

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose an animal");

// add a list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
builder.setItems(animals, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which) {
            case 0: // horse
            case 1: // cow
            case 2: // camel
            case 3: // sheep
            case 4: // goat
        }
    }
});

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

Kullanıcı bir liste öğesini tıklar tıklamaz kontrol seçeneğine geri döndüğünden OK düğmesine gerek yoktur OnClickListener.

Kotlin versiyonu

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose an animal")

// add a list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
builder.setItems(animals) { dialog, which ->
    when (which) {
        0 -> { /* horse */ }
        1 -> { /* cow   */ }
        2 -> { /* camel */ }
        3 -> { /* sheep */ }
        4 -> { /* goat  */ }
    }
}

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

Radyo düğmesi listesi

resim açıklamasını buraya girin

Radyo düğmesi listesinin geleneksel listeye göre avantajı, kullanıcının geçerli ayarın ne olduğunu görebilmesidir. Radyo düğmesi listesi yapmanın yolu kullanmaktır setSingleChoiceItems.

Java sürümü

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose an animal");

// add a radio button list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
int checkedItem = 1; // cow
builder.setSingleChoiceItems(animals, checkedItem, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user checked an item
    }
});

// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user clicked OK
    }
});
builder.setNegativeButton("Cancel", null);

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

Seçilen öğeyi burada kodladım, ancak gerçek bir projede bir sınıf üyesi değişkeni ile takip edebilirsiniz.

Kotlin versiyonu

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose an animal")

// add a radio button list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
val checkedItem = 1 // cow
builder.setSingleChoiceItems(animals, checkedItem) { dialog, which ->
    // user checked an item
}


// add OK and Cancel buttons
builder.setPositiveButton("OK") { dialog, which ->
    // user clicked OK
}
builder.setNegativeButton("Cancel", null)

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

Onay kutusu listesi

resim açıklamasını buraya girin

Bir onay kutusu listesi oluşturmanın yolu kullanmaktır setMultiChoiceItems.

Java sürümü

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose some animals");

// add a checkbox list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
boolean[] checkedItems = {true, false, false, true, false};
builder.setMultiChoiceItems(animals, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        // user checked or unchecked a box
    }
});

// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user clicked OK
    }
});
builder.setNegativeButton("Cancel", null);

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

Burada, listede hangi öğelerin zaten kontrol edildiğini kodladım. Bunları takip etmek istemeniz daha olasıdır ArrayList<Integer>. Daha fazla bilgi için dokümantasyon örneğine bakın. Ayrıca nullher şeyin işaretlenmemesini istiyorsanız işaretli öğeleri olarak ayarlayabilirsiniz .

Kotlin versiyonu

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose some animals")

// add a checkbox list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
val checkedItems = booleanArrayOf(true, false, false, true, false)
builder.setMultiChoiceItems(animals, checkedItems) { dialog, which, isChecked ->
    // user checked or unchecked a box
}

// add OK and Cancel buttons
builder.setPositiveButton("OK") { dialog, which ->
    // user clicked OK
}
builder.setNegativeButton("Cancel", null)

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

notlar

  • İçin contextYukarıdaki kodda, kullanmayan getApplicationContext()veya bir alacak IllegalStateException(bkz buraya niçin). Bunun yerine, gibi etkinlik içeriğine bir başvuru alın this.
  • Ayrıca kullanarak bir veritabanı veya başka bir kaynaktan liste öğelerini doldurabilirsiniz setAdapterya setCursorya geçen Cursorveya ListAdapteriçine setSingleChoiceItemsveya setMultiChoiceItems.
  • Liste ekrana sığmayacak kadar uzunsa, iletişim kutusu listeyi otomatik olarak kaydırır. Gerçekten uzun bir listeniz varsa, muhtemelen bir RecyclerView ile özel bir iletişim kutusu yapmanız gerektiğini tahmin ediyorum .
  • Yukarıdaki tüm örnekleri test etmek için sadece tıklandığında iletişim kutusunu göstermek daha tek bir düğme ile basit bir proje vardı:

    import android.support.v7.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity {
    
        Context context;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            context = this;
        }
    
        public void showAlertDialogButtonClicked(View view) {
    
            // example code to create alert dialog lists goes here
        }
    }

İlişkili


2
Bu harika, şimdi simgeler ekleyin;)
AaA

1
@AaA, bunun için mizanpaj kullanan bir özel mizanpaj uyarısı iletişim kutusu yapmanız gerektiğini düşünüyorum RecyclerView.
Suragch

onclick yöntemindeki iletişim kutusundaki 'hangisi' neyi ifade eder?
2017'de

@fefishing, belgelere göre , "tıklanan düğme (ör. BUTTON_POSITIVE) veya tıklanan öğenin konumu " dur .
Suragch

1
Özel bir bağdaştırıcı ile basit bir liste (1) uygulamak istiyorsanız , dinleyicide Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener): öğesini tıklatılan öğe konumuna eşit olacaktır. hiçbir etkisi olmayacaktır. whichonClickBuilder.setOnItemSelectedListener
Miha_x64

122

Özel bir iletişim kutusu kullanabilirsiniz.

Özel iletişim düzeni. list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ListView
        android:id="@+id/lv"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"/>
</LinearLayout>

Faaliyetinizde

Dialog dialog = new Dialog(Activity.this);
       dialog.setContentView(R.layout.list)

ListView lv = (ListView ) dialog.findViewById(R.id.lv);
dialog.setCancelable(true);
dialog.setTitle("ListView");
dialog.show();

Düzenle:

Alertdialog kullanma

String names[] ={"A","B","C","D"};
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater = getLayoutInflater();
View convertView = (View) inflater.inflate(R.layout.custom, null);
alertDialog.setView(convertView);
alertDialog.setTitle("List");
ListView lv = (ListView) convertView.findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names);
lv.setAdapter(adapter);
alertDialog.show();

custom.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</ListView>

ani

resim açıklamasını buraya girin


1
@Juan - devtopia.coop yazımı sadece aşağı oy için yükselttikten sonra düzenlediniz. Neyin yanlış olduğunu söyleyebilir misiniz
Raghunandan

Geçerli sürüm ile hiçbir şey, bir önceki tüm adaptör şeyler yoktu ve bunun için sadece boş bir ListView gösteren oldu, ben şimdi olumsuz oyumu memnuniyetle kaldırmak. 3 saat önceki bu düzenlemeye değil, eksik bir cevaba oy verdim.
Juan Cortés

@ Rashunandan, ben kodunu kullandım ama lv.setAdapter (adaptör) üzerinde istisna var; Bana yardım edebilir misin?
Ahmad Vatani

@Ahmad heyecan nedir?
Raghunandan

1
@NeilGaliaskarov evet kaydırılabilir. Listview kaydırılacak
Raghunandan

44
final CharSequence[] items = {"A", "B", "C"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Make your selection");
builder.setItems(items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        // Do something with the selection
        mDoneButton.setText(items[item]);
    }
});
AlertDialog alert = builder.create();
alert.show();

1
M.DoneButton nedir?
ForceFieldsForDoors

2
@ArhatBaid Ama setMessage bir mesaj koymak setItems çalışmıyor. Google'da arama yaptım, ancak bulduğum cevap setTitle'daki mesajı ayarlamaktı. Ancak sorun setTitle sadece birkaç karaktere izin veriyor. Uyarı İletişim kutusunda setMessage ve setItems kullanmanın bir yolu var mı?
David

@ Bunun için özel iletişim kutusuna gitmelisiniz.
Arhat Baid

1
Bu çözüm çok güzel çünkü bir ListAdapterile de gidebilirsiniz setSingleChoiceItems(yukarıdaki çağrıya çok benzer)
snotyak

Beklendiği gibi mükemmel ... yüzlerce öğeyi minimum kodla işler. :)
jeet.chanchawat

10

" import android.app.AlertDialog;" Aktarımını kullanın ve ardından

    String[] items = {"...","...."};             
    AlertDialog.Builder build = new AlertDialog.Builder(context);
    build.setItems(items, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //do stuff....
        }
    }).create().show();

Eğer sonra göstermek bunu AlertDialog oluşturmak oluşturmak ile bc gerekiyordu. yapıcı değil. (c) Facebamm
Facebamm

@ Facebamm bu doğru değil. show()her ikisini de yapar. Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();doğrudan show()yöntemin dokümantasyonundan
ᴛʜᴇᴘᴀᴛᴇʟ 23:16

bu doğru ama bazen bazı görünür kullanıcı arayüz hataları var. (c) Facebamm
Facebamm

Hayır, bu doğru değil. show (), create () ile aynıdır show (); / ** * Bu * oluşturucuya sağlanan bağımsız değişkenlerle bir {@link AlertDialog} oluşturur ve hemen iletişim kutusunu görüntüler. * <p> * Bu yöntemin çağrılması işlevsel olarak aynıdır: * <pre> * AlertDialog dialog = builder.create (); * dialog.show (); * </pre> * / public AlertDialog show () {final AlertDialog dialog = create (); ) (Dialog.Show; dönüş iletişim kutusu; }
Emanuel S

tamam, bir süredir test ettim ve sry diyorum, bu doğru. (c) Facebamm
Facebamm

4

Bu çok basit

final CharSequence[] items = {"Take Photo", "Choose from Library", "Cancel"};

AlertDialog.Builder builder = new AlertDialog.Builder(MyProfile.this);

builder.setTitle("Add Photo!");
builder.setItems(items, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int item) {
        if (items[item].equals("Take Photo")) {
            getCapturesProfilePicFromCamera();
        } else if (items[item].equals("Choose from Library")) {
            getProfilePicFromGallery();
        } else if (items[item].equals("Cancel")) {
            dialog.dismiss();
        }
    }
});
builder.show();


1

Kotlin'de:

fun showListDialog(context: Context){
    // setup alert builder
    val builder = AlertDialog.Builder(context)
    builder.setTitle("Choose an Item")

    // add list items
    val listItems = arrayOf("Item 0","Item 1","Item 2")
    builder.setItems(listItems) { dialog, which ->
        when (which) {
            0 ->{
                Toast.makeText(context,"You Clicked Item 0",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
            1->{
                Toast.makeText(context,"You Clicked Item 1",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
            2->{
                Toast.makeText(context,"You Clicked Item 2",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
        }
    }

    // create & show alert dialog
    val dialog = builder.create()
    dialog.show()
}

1
Cevabınıza biraz açıklama ekleyin.
Mathews Sunny

1
Ne tür bir açıklama?
Varsha Prabhakar

1

Bu, özel liste öğesiyle özel düzen iletişim kutusunu nasıl göstereceğinizdir, ihtiyacınıza göre özelleştirilebilir.

resim açıklamasını buraya girin

ADIM - 1 DialogBox'ın mizanpajını oluşturun yani: -

R.layout.assignment_dialog_list_view

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/rectangle_round_corner_assignment_alert"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv_popup_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:singleLine="true"
        android:paddingStart="4dp"
        android:text="View as:"
        android:textColor="#4f4f4f" />

    <ListView
        android:id="@+id/lv_assignment_users"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

ADIM - 2 İş mantığınıza göre özel liste öğesi düzeni oluşturun

R.layout.item_assignment_dialog_list_layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:padding="4dp"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/iv_user_profile_image"
        android:visibility="visible"
        android:layout_width="42dp"
        android:layout_height="42dp" />
    <TextView
        android:id="@+id/tv_user_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="8dp"
        android:layout_marginStart="8dp"
        android:paddingBottom="8dp"
        android:textColor="#666666"
        android:textSize="18sp"
        tools:text="ABCD XYZ" />
</LinearLayout>

ADIM - 3 İstediğiniz bir Veri modeli sınıfını oluşturun

public class AssignmentUserModel {

private String userId;
private String userName;
private String userRole;
private Bitmap userProfileBitmap;

public AssignmentUserModel(String userId, String userName, String userRole, Bitmap userProfileBitmap) {
    this.userId = userId;
    this.userName = userName;
    this.userRole = userRole;
    this.userProfileBitmap = userProfileBitmap;
}


public String getUserId() {
    return userId;
}

public void setUserId(String userId) {
    this.userId = userId;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getUserRole() {
    return userRole;
}

public void setUserRole(String userRole) {
    this.userRole = userRole;
}

public Bitmap getUserProfileBitmap() {
    return userProfileBitmap;
}

public void setUserProfileBitmap(Bitmap userProfileBitmap) {
    this.userProfileBitmap = userProfileBitmap;
}

}

ADIM - 4 Özel adaptör oluşturma

public class UserListAdapter extends ArrayAdapter<AssignmentUserModel> {
private final Context context;
private final List<AssignmentUserModel> userList;

public UserListAdapter(@NonNull Context context, int resource, @NonNull List<AssignmentUserModel> objects) {
    super(context, resource, objects);
    userList = objects;
    this.context = context;
 }

@SuppressLint("ViewHolder")
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.item_assignment_dialog_list_layout, parent, false);
    ImageView profilePic = rowView.findViewById(R.id.iv_user_profile_image);
    TextView userName = rowView.findViewById(R.id.tv_user_name);
    AssignmentUserModel user = userList.get(position);

    userName.setText(user.getUserName());

    Bitmap bitmap = user.getUserProfileBitmap();

    profilePic.setImageDrawable(bitmap);

    return rowView;
}

}

ADIM - 5 Bu işlevi oluşturun ve bu yöntemde yukarıdaki veri modelinin ArrayList'ini sağlayın

// Pass list of your model as arraylist
private void showCustomAlertDialogBoxForUserList(ArrayList<AssignmentUserModel> allUsersList) {
        final Dialog dialog = new Dialog(mActivity);
        dialog.setContentView(R.layout.assignment_dialog_list_view);
        if (dialog.getWindow() != null) {
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); // this is optional
        }
        ListView listView = dialog.findViewById(R.id.lv_assignment_users);
        TextView tv = dialog.findViewById(R.id.tv_popup_title);
        ArrayAdapter arrayAdapter = new UserListAdapter(context, R.layout.item_assignment_dialog_list_layout, allUsersList);
        listView.setAdapter(arrayAdapter);
        listView.setOnItemClickListener((adapterView, view, which, l) -> {
            Log.d(TAG, "showAssignmentsList: " + allUsersList.get(which).getUserId());
           // TODO : Listen to click callbacks at the position
        });
        dialog.show();
    }

Adım - 6 İletişim kutusuna yuvarlak köşe arka plan verilmesi

@ Çekilebilir / rectangle_round_corner_assignment_alert

    <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffffff" />
    <corners android:radius="16dp" />
    <padding
        android:bottom="16dp"
        android:left="16dp"
        android:right="16dp"
        android:top="16dp" />
</shape>

0

Bir AlertDialog'da EditText birimini oluşturduktan sonra, genel kullanım için çağrılacak bir yöntem yapmak daha akıcı değil mi?

public static void EditTextListPicker(final Activity activity, final EditText EditTextItem, final String SelectTitle, final String[] SelectList) {
    EditTextItem.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            builder.setTitle(SelectTitle);
            builder.setItems(SelectList, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialogInterface, int item) {
                    EditTextItem.setText(SelectList[item]);
                }
            });
            builder.create().show();
            return false;
        }
    });
}

0
private void AlertDialogue(final List<Animals> animals) {
 final AlertDialog.Builder alertDialog = new AlertDialog.Builder(AdminActivity.this);
 alertDialog.setTitle("Filter by tag");

 final String[] animalsArray = new String[animals.size()];

 for (int i = 0; i < tags.size(); i++) {
  animalsArray[i] = tags.get(i).getanimal();

 }

 final int checkedItem = 0;
 alertDialog.setSingleChoiceItems(animalsArray, checkedItem, new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {

   Log.e(TAG, "onClick: " + animalsArray[which]);

  }
 });


 AlertDialog alert = alertDialog.create();
 alert.setCanceledOnTouchOutside(false);
 alert.show();

}

Bu kod soruyu cevaplayabilirken, sorunun nasıl ve / veya neden çözüldüğüne dair ek bağlam sağlamak yanıtlayıcının uzun vadeli değerini artıracaktır.
Piotr Labunski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.