2013-10-01 3 views
2

У меня есть диалоговое окно.Диалоговое окно Android singlechoiceitem

AlertDialog.Builder mySortAlertDialog = new AlertDialog.Builder(this, 
    AlertDialog.THEME_DEVICE_DEFAULT_DARK); 
mySortAlertDialog.setTitle("Sort by?"); 
String[] r = { 
    "Firstname", "Lastname" 
}; 
mySortAlertDialog.setSingleChoiceItems(r, -1, new DialogInterface.OnClickListener() { 

    public void onClick(DialogInterface dialog, int which) { 

    } 
}); 

Это создает два варианта, и теперь мне нужна кнопка, чтобы подтвердить выбор пользователей. Поэтому я делаю это так:

mySortAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {@ 
     Override 
     public void onClick(DialogInterface dialog, int which) { 

Теперь проблема в том, что проблема. У меня есть два слушателя, один из которых проверяет, какой вариант выбран, а другой - для подтверждения выбора и выполняет логику, используя значения из первого слушателя.

Мой вопрос: как мне заставить этих двух слушателей взаимодействовать так, чтобы пользователь выбирал имя или фамилию, а затем нажимал OK, а затем логика выполнялась на основе выбора.

Спасибо.

EDIT: это то, что диалог выглядит мой ...

enter image description here

ответ

2

Используя ваш код, это должно работать отлично. (. Использование AlertDialoggetListView#getCheckedItemPosition)

AlertDialog.Builder mySortAlertDialog = new AlertDialog.Builder(this); 
mySortAlertDialog.setTitle("Sort by?"); 
String[] r = {"Firstname", "Lastname"}; 
mySortAlertDialog.setSingleChoiceItems(r, 0, null); 

mySortAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     Toast.makeText(mContext, "Selected: " + ((AlertDialog)dialog).getListView().getCheckedItemPosition(), Toast.LENGTH_LONG).show(); 
    } 
}); 
mySortAlertDialog.create().show(); 
+0

Theres красную линию под mContext в методе OnClick говоря, что это не может быть разрешен к переменной. Что это должно быть? – Ogen

+0

Извините, пожалуйста, используйте 'this' вместо –

+0

« это »не сработало, потому что оно ссылалось на DialogInterface, я просто использовал« getApplicationContext() », и он отлично работал, спасибо за ответ. – Ogen

1

Заменить этот код.

mySortAlertDialog.setSingleChoiceItems(r, -1, new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 

     } 
}); 

с

mySortAlertDialog.setItems(r, -1, new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 

     } 
}); 

Тогда попробуйте поставить положительную кнопку в диалоговом окне.

1

Вы можете использовать, как показано ниже:

AlertDialog.Builder mySortAlertDialog = new AlertDialog.Builder(this); 
      mySortAlertDialog.setTitle("Sort by?"); 
      String[] r = { "Firstname", "Lastname" }; 
      String selectedText = ""; 
      mySortAlertDialog.setSingleChoiceItems(r, -1, 
        new DialogInterface.OnClickListener() { 

         public void onClick(DialogInterface dialog, int which) { 
          selectedText = r[which]; 
         } 
        }); 

      mySortAlertDialog.setPositiveButton("Ok", new OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // Use selectedText here 

       } 
      }); 
Смежные вопросы