Личный cайт

Andrew ScyTer'a

Меню сайта
Анекдот дня
Категории раздела
Фрагменты жизни [13]
Путь к финансовой свободе [1]
Программирование под Android [5]
Форма входа
Поиск
Календарь
«  Июнь 2015  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2015 » Июнь » 26 » Using dynamic Fragment inside Fragment
13:44
Using dynamic Fragment inside Fragment

Few days ago I had to solve such problem. I have FragmentA with ScrollView and lot of items in it. One of the middle items should be FragmentB. It's work fine, but on screen rotation FragmentB appears few seconds latter, than FragmentA created. So I lose ScrollView position on screen rotate.
I've tried a lot of ways to solve problem and was almost ready to replace FragmentB with CustomView, but at last find such solution of this problem:

fragment_a.xml:

android:id="@+id/fragment_a"
...>

android:id="@+id/scroll_view"
...>

.../>

android:id="@+id/fragment_b_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>

.../>




FragmentA.java

...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mainView = inflater.inflate(R.layout.fragment_a, ...);

FragmentB fragmentB = (FragmentB) getChildFragmentManager().findFragmentByTag(FragmentB .FRAGMENT_TAG);
Bundle arguments;
if (fragmentB == null) {
arguments = new Bundle();
arguments.putInt("i", 5);
// (put default params)

} else {
arguments = fragmentB.getArguments();
}

fragmentB = new FragmentB ();
fragmentB.setArguments(arguments);
getChildFragmentManager()
.beginTransaction()
.replace(
R.id.fragment_b_container,
fragmentB,
FragmentB .FRAGMENT_TAG
)
.commit();
...

FragmentB.java

int i, j;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle arguments = getArguments();
if (arguments != null) {
i = arguments.getInt("i");
j = arguments.getInt("j", -1);
}
}

...
// do stuf with j
...

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getArguments().putInt("i", i);
getArguments().putInt("j", j);
}

Категория: Программирование под Android | Просмотров: 88 | Добавил: ScyTer | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Блог
26.06.2015
Using dynamic Fragment inside Fragment
[Программирование под Android]
15.05.2015
GCM in Android
[Программирование под Android]
20.03.2015
Обновление Google Play Services
[Программирование под Android]
11.12.2014
Отмена анимации
[Программирование под Android]
16.10.2014
Середина осени
[Фрагменты жизни]
Форум
  • Стоит посмотреть, послушать, почитать...

  • Разное другое

  • Разное другое

  • Стоит посмотреть, послушать, почитать...

  • Фрагменты моей жизни

  • Copyright ScyTer © 2017Создать бесплатный сайт с uCoz