как остановить фоновую активность при запуске диалогового окна предупреждения в Android

#android #process #background #dialog #alert

#Android #процесс #фон #диалоговое окно #предупреждение

Вопрос:

У меня есть alertdialog с двумя текстами редактирования, и когда пользователь пытается ввести текст в один из текстов редактирования, создается впечатление, что создается новый экземпляр фоновой активности. Как мне предотвратить это?

 @Override
public boolean onSearchRequested() {
    showDialog(DIALOG_SEARCH_ID);

    return false;
}

protected Dialog onCreateDialog(int id) {
    switch(id) {
    case DIALOG_SEARCH_ID:
        LayoutInflater factory = LayoutInflater.from(this);
        final View searchView = factory.inflate(R.layout.searchbar2, null);
        AlertDialog ad = new AlertDialog.Builder(TravelBite.this)
            .setView(searchView)
            .create();
        Window win = ad.getWindow();
        win.setGravity(48);
        return ad;
    }
    return null;
}
  

Комментарии:

1. Вам нужно будет опубликовать код, в котором вы создаете и обрабатываете AlertDialog. Мы не можем дать ответ, основанный только на вашем описании.

2. Вы также используете onpreparredialog ()? Нам нужно увидеть код, в который вы передаете ввод EditText.

3. Я не использую onpreparredialog () и пока не обрабатываю ввод EditText. Я увидел, что фоновая активность запускается, просто выбрав поле EditText.

Ответ №1:

Диалоги создаются асинхронно. Например, при запуске движка

 AlertDialog ad = new AlertDialog.Builder(TravelBite.this)
            .setView(searchView)
            .create();
  

он генерирует вызов для создания этого и продолжает переходить прямо к Window win = ad.getWindow(); .

Вам нужно будет обработать это с помощью флагов и / или дополнительной логики внутри обработчиков onClick диалогового окна.

Итак, когда вы получите код, созданный для обработки редактируемых текстов и кнопок диалогового окна, вставьте его сюда 🙂

Комментарии:

1. Не могли бы вы уточнить, что должно обрабатываться с помощью flags или внутри onClick? Я отредактировал свой ответ и добавил в XML, содержащий EditTexts и Button, но я не уверен, как код для обработки EditText может помочь остановить воссоздание фоновой активности.

Ответ №2:

Прямо из документации Google для разработчиков Android:

…Когда во время выполнения происходит изменение конфигурации, активность завершается и перезапускается по умолчанию…

Я предполагаю, что это то, что происходит; фоновая активность перезапускается из-за изменения конфигурации устройства (например, ориентации экрана, режимов ввода, размера экрана и т.д.).

В вашем файле манифеста укажите, что как ваша фоновая активность, так и ваша активность AlertDialog обрабатывают изменение конфигурации, т.Е.:

 <activity android:name=".MyActivity"
          android:configChanges="locale|navigation|orientation"
          android:label="@string/app_name">
  

Вы можете изменить атрибуты для android:configChanges в зависимости от вашей ситуации.

Взгляните на документацию Android и посмотрите, какие атрибуты вам нужны:http://developer.android.com/guide/topics/manifest/activity-element.html#config