Как сохранить диалог поиска Android при повороте экрана? - PullRequest
1 голос
/ 06 января 2011

Я построил поисковый виджет на основе кода Searchable Dictionary v2.Все работает нормально, но есть одна проблема.

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

Можно ли как-нибудь сделать так, чтобы он переключал окно редактирования в соответствующий режим (альбомный или книжный), не выходя и не перезапуская диалоговое окно?

Вы можете проверить поведение с помощью поискового словаря.Я хочу что-то вроде виджета поиска Google.Он просто переключает режим редактирования, пока он держит экран.

Ответы [ 2 ]

5 голосов
/ 06 января 2011

После изменения ориентации экрана Android создает новое действие / представление, поэтому вам, возможно, придется самостоятельно управлять ориентацией экрана. Я успешно использовал это решение в приложении, полагаю, что оно также применимо к виджетам.

Смотрите эту страницу о том, как это сделать:
http://www.androidpeople.com/android-how-to-handle-screen-orientation-change-issue/

Некоторые другие полезные советы (в основном те же решения) здесь:
Как мне обрабатывать изменения ориентации экрана при активности, запущенной внутри активности вкладки
Как справиться с изменением ориентации экрана при активном диалоге прогресса и фоновом потоке?

Некоторая информация, касающаяся onPause () и onSaveInstanceState () (которая может не применяться при использовании виджета, но на всякий случай :)) находится здесь:
Как отключить изменение ориентации на Android?

2 голосов
/ 28 марта 2014

Что я сделал, чтобы заблокировать ориентацию во время отображения диалогового окна, а затем разблокировать ее, когда закончите:

int currentOrientation = getResources().getConfiguration().orientation;
        if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); //locks landscape
        }
        else {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); //locks port
        }
    // do work
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...