Android установил выбранный элемент в диалоговом окне предупреждения

Я создаю диалоговое окно Alert Dialog в начале моего приложения, чтобы позволить пользователю выбирать, где хранить данные, которые мое приложение загружает из Интернета. То, что я хочу достичь сейчас, зависит от размера внутреннего / внешнего хранилища. Я хочу установить выбранный один из элементов. Вот код, который я использую для создания диалога:

@SuppressWarnings("static-access") public void createDialog(){ final CharSequence[] items = {"Phone Memory - "+memorysize+" free space", "SD Card - "+megAvailable+" MB free space"}; final int userId = rpc.getUserId(this); final String servername = rpc.getCurrentServerName(this); SharedPreferences stampiiSettings = PreferenceManager.getDefaultSharedPreferences(MyCollectionList.this); final SharedPreferences.Editor editor = stampiiSettings.edit(); AlertDialog.Builder builder = new AlertDialog.Builder(this.getParent()); builder.setTitle("Select Storage Path"); builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { if(item == 0){ rpc.createFoldersInInternalStorage(servername, userId, MyCollectionList.this); Toast.makeText(getApplicationContext(), "Selected Storage Path : Phone Memory", Toast.LENGTH_SHORT).show(); editor.putInt("storagePath", 1); editor.commit(); } else if (item == 1){ rpc.createFoldersInExternalStorage(servername, userId, MyCollectionList.this); Toast.makeText(getApplicationContext(), "Selected Storage Path : SD Card", Toast.LENGTH_SHORT).show(); editor.putInt("storagePath", 2); editor.commit(); } }}); builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mHandlerUpdateUi.post(mUpdateUpdateUi); // update UI } }); AlertDialog alert = builder.show(); } 

И еще одно, чего я хочу достичь, как я могу запретить пользователю закрывать диалоговое окно оповещений, если он не выбирает какой-либо элемент. Я не хочу закрывать диалог при нажатии кнопки «Назад» или когда он нажимает кнопку «ОК». Любые идеи / предложения / помощь приветствуются!

Сделайте что-то вроде этого:

 int selected = 0; // or whatever you want builder.setSingleChoiceItems(items, selected, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { //onclick }}); 

Для кнопки закрытия вы можете определить кнопку отмены, так как это нормально.

 builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // no need to write anything here just implement this interface into this button } }); 

Для выбранного элемента вы можете либо сделать spinner как локальное определение для этого класса, либо вы можете присвоить это значение любой переменной, подобной выбранной.

 int selected = 0; // if you want in integer or String selected = "internal"; // you can go with string 

Теперь вы можете установить значение по умолчанию для этого и получить значение, когда вы нажимаете кнопку ok в диалоговом окне

 builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // here get the selected item value } }); 
Intereting Posts
Обработчик против AsyncTask Размер строки и изменение шрифта в файле string.xml Цветной ресурс для Android UnsatisfiedLinkError: dlopen failed: не удается найти символ «strtof», на который ссылается «libsupportjni.so» на API <20 Атрибут компоновки адаптера Android API для Android Что эквивалентно getCheckedItemCount () для уровня API <11? Сборка Android-студии замедлилась после добавления новых библиотек? ViewPager и база данных Избегайте передачи null в качестве корня представления (необходимо разрешить параметры макета на корневом элементе раздутого макета) Можно ли использовать Glide для загрузки изображения в TextView? Навигация по локальной сети IntelliJ IDEA Библиотека javacv-android-arm.jar содержит собственные библиотеки, которые не будут работать на устройстве AndroidStudio говорит мне, что мой эмулятор несовместим с моим проектом, почему, если эмулятор api10, а проект api3? Android-графическая библиотека Android Как работает getprop и setprop adb