Своя кнопка в диалог фрагмент

357
21 мая 2017, 21:16

У меня к классу наследуемому от DialogFragment подключен интерфейс DialogInterface.OnClickListener.

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

  @Override
    public void onClick(DialogInterface dialog, int which) {
    }
    @Override
    public void onDismiss(DialogInterface unused) {
        super.onDismiss(unused);
    }
    @Override
    public void onCancel(DialogInterface unused) {
        super.onCancel(unused);
    }

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

 Button vk_share = (Button)form.findViewById(R.id.vk_button);

А что дальше?

Answer 1

В документации сказано:

the button that was clicked (ex. BUTTON_POSITIVE) or the position of the item clicked

Раз ты наследуешься, это какое-то кастомное диалоговое окно? Вряд ли в этот интерфейс поступит ID от кастомной кнопки. Просто найди кнопку и задай ей нужный слушатель
UPD Да, я понял тебя, но ты подключил кастомную кнопку через разметку, правда не знаю, можно ли так выражаться :D
Суть в том, что в обычном диалоговом окне есть три кнопки - positive, negative и neutral. Ну, что-то вроде ОК - ОТМЕНА... Их можно указать:

public class FireMissilesDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage(R.string.dialog_fire_missiles)
           .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // FIRE ZE MISSILES!
               }
           })
           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // User cancelled the dialog
               }
           });
    // Create the AlertDialog object and return it
    return builder.create();
}

А заместо того, чтобы указывать слушатели сразу для таких кнопок, можно реализовать интерфейс, который ты написал. И тогда в метод onClick в переменную which поступит одна из трех констант - BUTTON_NEGATIVE, BUTTON_NEUTRAL или BUTTON_POSITIVE. Дальше уже я думаю понятно. Ссылки по теме - https://developer.android.com/guide/topics/ui/dialogs.html, https://developer.android.com/reference/android/content/DialogInterface.html#BUTTON_POSITIVE

READ ALSO
Удалить слова, встречающиеся один раз из массива строк

Удалить слова, встречающиеся один раз из массива строк

Есть массив строк, нужно удалить НЕповторяющиеся элементыНашла минималистичный код для удаления повторяющихся элементов:

320
Хранение данных вне приложения android (JSON)

Хранение данных вне приложения android (JSON)

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

254
Можно ли закрепить элемент за другим по ID

Можно ли закрепить элемент за другим по ID

Есть две таблицы, как я могу закрепить одну таблицу за другую? Пример:

242
Распорядок в z-index'ах

Распорядок в z-index'ах

Вроде бы все нормально расставлено, а на практике наоборотПри загрузке страницы и открытии мобильного (!) меню, его пункты оказываются под...

215