Я новичок в Android и, в качестве первого шага, создаю приложение для работы в телефоне с заданием, в котором я помещаю два фрагмента.Первый фрагмент имеет переработанное представление элементов, которые должны представлять заголовки статей.Когда я нажимаю на один, открывается второй фрагмент и показывает заголовок (в текстовом представлении) и содержание (в другом текстовом представлении) статьи (на данный момент, для простоты, я помещаю заголовок статьи как поддельные заголовки, и яесть настройка, для которой содержимое не отображается, но в текстовом представлении содержимого также отображается заголовок).
Я хочу сохранить положение прокрутки представления рециркулятора.
Когда япрокрутите вниз, имея в верхней части экрана заголовок статьи, отличный от первого, я выбираю статью, и открывается второй фрагмент с ожидаемым содержанием, и это нормально.Когда я поворачиваюсь в альбомную ориентацию, один и тот же фрагмент содержит одинаковое содержимое, хорошо.Итак:
1) когда я нажимаю кнопку возврата из пейзажа, возвращаясь к первому фрагменту, я получаю ту же настройку для вида рециркулятора, хорошо;
2), когда я снова поворачиваюсьс портретом, оставшимся на втором фрагменте, тоже нормально.Теперь, если я нажму кнопку «Назад», чтобы вернуться к первому фрагменту, к списку статей, представление рециркулятора НЕ будет настроено для запуска с элемента, на который я изначально прокрутился.Что я могу сделать?
У меня есть этот код в первом фрагменте, который содержит представление рециркулятора:
@Override
public void onSaveInstanceState(Bundle state) {
int lastFirstVisiblePosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
state.putInt(Articles.RECYCLER_POSITION_KEY, lastFirstVisiblePosition);
super.onSaveInstanceState(state);
}
@Override
public void onActivityCreated(Bundle state) {
super.onActivityCreated(state);
if (state != null) {
int lastFirstVisiblePosition = state.getInt(Articles.RECYCLER_POSITION_KEY);
((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPosition(lastFirstVisiblePosition);
}
}
Чего мне не хватает?Спасибо.
[ EDIT ] В моем слушателе это для вызова второго фрагмента:
ArticleReaderFrag newFragment = new ArticleReaderFrag();
Bundle args = new Bundle();
args.putString(NEW_FRAG_TITLE_KEY, item);
args.putString(NEW_FRAG_BODY_KEY, itemb);
newFragment.setArguments(args);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_activity, newFragment);
transaction.addToBackStack(null);
transaction.commit();