Сохранить screenId для onCreate - PullRequest
0 голосов
/ 13 июля 2011

У меня есть класс, который читает XML-файл, чтобы создать несколько экранов в флиппере горизонтальной страницы.Однако содержимое представления может отличаться при переходе с книжного на альбомный или обратно.

Я бы хотел сохранить текущую выбранную страницу, чтобы при каждом переключении экрана снова использовать это значение для создания новой ориентации.screen.

Я использую класс HorizontalPager, который может извлечь текущую страницу с помощью getCurrentScreen () (возвращает целое число) и единицы, чтобы установить страницу setCurrentScreen (int currentScreen, boolean animate)

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

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

Сохраните индекс своей страницы до того, как произойдет изменение ориентации экрана:

@Override
public Object onRetainNonConfigurationInstance() {
    return mIndex;//your index
}

В onCreate ():

Integer index= (Integer) getLastNonConfigurationInstance();

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

0 голосов
/ 14 июля 2011

Я просто проспал свой вопрос и решил его сам:)

Я сделал следующее:

Я создал метод setPager (int pager), который устанавливает мою статическую переменную в Pager натекущая страница.Этот метод вызывается из класса HorizontalPager всякий раз, когда экран переворачивается.

Каждый раз, когда экран переворачивается, вызывается onCreate (), и мой HorizontalPager будет иметь значение, которое у моего static int имеет метод setPager(int pager).

...