проблема в ротации в андроиде - PullRequest
2 голосов
/ 18 мая 2011

Привет, все, у меня есть проблемы.
На самом деле у меня есть два макета layout-port и layout-land.
и 2 экрана.оба экрана находятся в обоих режимах макета.
1) Первый экран - экран пароля для входа в систему
2) Второй экран - экран списка просмотра

Теперь, когда я поворачиваю свой мобильный телефон.он воссоздает метод onCreate ().а затем измените макет в соответствии с требованиями.

Теперь из-за вызова onCreate () данные моего списка восстанавливаются.Как преодолеть эту проблему.Пожалуйста, скажите мне ..

Я даже попытался написать следующий код в файле с описанием

android:configChanges="orientation|keyboard|keyboardHidden"

Этот код работает в том смысле, что он не вызывает метод onCreate (), но теперьПроблема в том, что он также не меняет макет автоматически.Значит, если я нахожусь в портретной ориентации, поверните его в альбомную ориентацию, это не изменит режим макета.Пожалуйста, укажите, что я могу с этим сделать.

Большое спасибо заранее

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Сохранить некоторое значение в onRetainNonConfigurationInstance методе
так что вы можете проверить, что getLastNonConfigurationInstance() имеет значение null, если значение NULL только ваши данные списка генерируют код

т. Е. У вас на создание делать вот так

final Object data = getLastNonConfigurationInstance();

    // The activity is starting for the first time
    if (data == null) {
        //code to generate list data 
    } else {
        // The activity was destroyed/created automatically

    }

См. Это Быстрое изменение ориентации экрана ,

0 голосов
/ 18 мая 2011

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

@Override
 public void onConfigurationChanged(Configuration newConfig)
 {
     super.onConfigurationChanged(newConfig);
             if(getScreenOrientation() == 2)
                  setContentView(landscape.xml);
             else
                  setContentView(portrait.xml);
 }

private int getScreenOrientation()
{
    return getResources().getConfiguration().orientation;
}

и в декларации

android:configChanges="orientation|keyboard|keyboardHidden"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...