Как динамически показать / скрыть кнопки настраиваемого диалога в настройках?

Я создал собственный диалог, который используется на экране настроек. Все работает отлично, кроме одного: я хочу переключить видимость кнопки "Отмена" в зависимости от состояния внутренней проверки.

Обычно у вас есть onPrepareDialog и onCreateDialog, и вы можете сделать это в onCreateDialog. Но здесь у нас есть OnPrepareDialogBuilder... так где же OnCreateDialogBuilder? Где я могу сделать что-то вроде

builder.setNegativeButton(null, null);

после onPrepareDialogBuilder? Я не могу сделать это в onPrepareDialogBuilder, так как мне нужна кнопка "Отмена" в случае сбоя внутренней проверки.

Можете ли вы помочь мне в правильном направлении?

public UnlockPreference(Context context, AttributeSet attrs) {
    super(context, attrs);
    setDialogLayoutResource(R.layout.dialog_enter_registration);
}

@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
    super.onPrepareDialogBuilder(builder);
    builder.setTitle(R.string.label_enter_registration);
}


// would need something like
@Override
protected void onCreateDialogBuilder(AlertDialog.Builder builder) {
    super.onCreateDialogBuilder(builder);
    if (internalCheckOk())
        builder.setNegativeButton(null, null);
    else
        builder.setNegativeButton(..., ...);
}

1 ответ

Ты можешь использовать

setNegativeButtonText("")
setPositiveButtonText("")

это будет автоматически скрывать кнопки

Другие вопросы по тегам