как остановить фоновую активность при запуске диалогового окна предупреждения в Android - PullRequest
1 голос
/ 26 апреля 2011

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

@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;
}

Ответы [ 2 ]

0 голосов
/ 10 июня 2015

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

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

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

<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

0 голосов
/ 26 апреля 2011

Диалоги создаются асинхронно. Как в случае, когда двигатель ударяет

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

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

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

Итак, когда вы напишите код, созданный для обработки текстовых правок и кнопок диалога, вставьте его здесь:)

...