Сбросить Android-диалог - PullRequest
       28

Сбросить Android-диалог

1 голос
/ 20 сентября 2011

Я нашел много тем о том, как сохранить состояния диалога, например, используя экземпляры Bundle.Тем не менее, я не могу найти, как «правильно» сбросить диалог.

Рассмотрим этот пример пользовательского диалога (макет XML содержит EditText с идентификатором «input_text»):

public class CustomDialog extends Dialog {
  public CustomDialog (Context context) { super (context); }

  protected onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);

    setContentView(R.layout.input_query);
    EditText txt = (EditText) findViewById(R.id.input_text);

    // Consider that I'm declaring here the use of listeners
    // in order to retrieve input text.
  }
}

Я всплываю в этом диалоговом окне при нажатии кнопки в основном действии.Во второй раз, когда происходит это действие, мой EditText содержит входные данные из предыдущего экземпляра.

Теперь я знаю, что могу сбросить содержимое этого EditText, но мне интересно, существует ли общий, уже существующий методсделать это, в диалоге.Например, если у меня более сложный диалог, я хочу, чтобы он имел значения «по умолчанию» каждый раз, когда создается этот объект.Я думал, что удаление звонка на super.onCreate(savedInstanceState); может сработать, но это не так.

Извините, если это глупый вопрос (или если он уже решен ... Я не нашел его) ... Любойпомощь приветствуется.Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 20 сентября 2011

Обычно вы должны переопределить onCreateDialog и onPrepareDialog методы упражнения.

При первом создании диалогов вызывается onCreateDialog, поэтому вы должны создать свой диалог в этом методе.Чтобы инициализировать / обновить содержимое диалогов, переопределите onPrepareDialog, он всегда вызывается перед отображением диалога.

1 голос
/ 20 сентября 2011

Попробуйте использовать метод, противоположный showDialog () - это метод removeDialog (). У меня была проблема, похожая на вашу. Каждый диалог, который я показывал, имел данные из первого экземпляра. Когда я начал использовать removeDialog (), содержимое обновлялось правильно.

...