Intereting Posts
Текущий статус для приложений Android TV? (Что использовать вместо панели уведомлений на Android) Семантический материал (RDF, OWL) на мобильных телефонах – это возможно? SurfaceTexture.OnFrameAvailableListener перестает быть вызванным SwipeyTabs – как создать Swipey Tabs с помощью библиотеки ActionBarSherlock? Как я могу сохранить растровое изображение с onRetainNonConfigurationInstance () для ориентации экрана? Небезопасная попытка JavaScript получить доступ к кадру с URL-адресом в Android Служба Android – startService вызывается несколько раз и вызывает смешивание значений … Подписанный APK не может быть создан в Android Studio 1.3 Динамические ссылки Firebase не запускают мое приложение в конкретной ситуации GSON: сериализовать одиночное нулевое поле без использования глобального serializeNulls () Как создать / отключить фильтр намерений программируемым способом? Как определить, когда экран устройства Android близок к тайм-ауту или «Блокировка»? Ошибки индексатора Eclipse при использовании STL с Android NDK Как добавить разделитель в стиле TabLayout в Android? TabLayout является новичком в библиотеке поддержки дизайна ViewFlipper имеет «огромную» задержку

Android ActionBar со списком навигации: сохранить выбранную позицию позиции во время изменения конфигурации?

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

Как сохранить выбранный индекс счетчика во время изменений конфигурации?

благодаря

Вы должны переопределить onSaveInstanceState и сохранить выбранную позицию списка навигации для onSaveInstanceState . Не забудьте восстановить позицию в onCreate .

Посмотрите пример ниже:

 public class MainActivity { private static final String CURRENT_FRAGMENT_TAG = "fragmentPosition"; @Inject @Named("navigationFragments") private Provider<? extends Fragment>[] fragmentProviders; @Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); actionBar.setListNavigationCallbacks(ArrayAdapter.createFromResource( this, R.array.navigation_menu, android.R.layout.simple_list_item_1), new ActionBar.OnNavigationListener() { @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { final String fragmentTag = "fragment-" + itemPosition; // to prevent fragment re-selection and loosing early saved state if (getSupportFragmentManager().findFragmentByTag(fragmentTag) != null) { return true; } final Fragment fragment = fragmentProviders[itemPosition].get(); getSupportFragmentManager().beginTransaction(). replace(android.R.id.content, fragment, fragmentTag). commit(); return true; } }); actionBar.setSelectedNavigationItem(bundle != null ? bundle.getInt(CURRENT_FRAGMENT_TAG) : 0); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(CURRENT_FRAGMENT_TAG, getSupportActionBar().getSelectedNavigationIndex()); } /* Additional stuff here */ } 

Provider<? extends Fragment>[] fragmentProviders Provider<? extends Fragment>[] fragmentProviders – это список объектов фабричных методов, которые создают новый фрагмент. Замените getSupportActionBar() на getActionBar() и getSupportFragmentManager() на getFragmentManager() если вы не используете actionbarsherlock