Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
AndreyAlt86
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 4
1

Смена фрагмента в контейнере

24.07.2015, 20:48. Просмотров 704. Ответов 7
Метки нет (Все метки)

Всем доброго вечера!

Проблема такая - есть Navigation Draver, по кликам в котором я хочу менять содержимое контейнера, т.е. реплейсить фрагменты. На данный момент 2 фрагмента. В каждом фрагменте есть TabHost, вкладки которого реализованы так же через фрагменты, т.е. через PageAdapter. При запуске приложения я помещаю в контейнер первый фрагмент. Далее при клике делаю replace на другой фрагмент, но при этом во втором фрагменте не отображаются вкладки. Если же устройство повернуть на 90 градусов, то вкладки появляются. Что мне делать и как мне быть? Уже 3 дня гуглю.

Надеюсь на вашу помощь!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2015, 20:48
Ответы с готовыми решениями:

Повторное создание фрагмента внутри фрагмента ViewPager
Доброго времени суток! Использую внутри фрагмента элемент ViewPager, который...

Вызов фрагмента из фрагмента с использованием EventBus
Доброго времени суток! Можно ли использовать EventBus для того, что из...

Открытие фрагмента NawDrawer
Доброго времени суток форумчане, кто может помочь, нужно чтобы при открытии...

Взаимодействие Активити и Фрагмента
Что есть. 1. Фрагмент который нажатием на кнопку запускает активность, которая...

Доступ к виджету фрагмента
Пытаюсь добавить фрагмент в контейнер и получить доступ к его кнопке frag1 =...

7
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
25.07.2015, 23:47 2
А на 180 градусов если повернуть что будет?
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
26.07.2015, 01:07 3
Цитата Сообщение от AndreyAlt86 Посмотреть сообщение
Проблема такая - есть Navigation Draver, по кликам в котором я хочу менять содержимое контейнера, т.е. реплейсить фрагменты. На данный момент 2 фрагмента. В каждом фрагменте есть TabHost, вкладки которого реализованы так же через фрагменты, т.е. через PageAdapter. При запуске приложения я помещаю в контейнер первый фрагмент. Далее при клике делаю replace на другой фрагмент, но при этом во втором фрагменте не отображаются вкладки. Если же устройство повернуть на 90 градусов, то вкладки появляются. Что мне делать и как мне быть? Уже 3 дня гуглю.
Смотрите внимательно, что замещаете и какой FragmentManager где вызываете... Так Вам вряд ли помогут, выложите код.
0
AndreyAlt86
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 4
26.07.2015, 07:26  [ТС] 4
При кликах по элементам NavigationDrawer я делаю так:
Java
1
2
3
4
5
6
7
8
9
10
11
                       if (i == 0) {
                            transaction = fragmentManager.beginTransaction();
                            transaction.replace(R.id.llContainer, new AllMyWIFragment());
                            transaction.commit();
                        }
 
                        if (i == 1) {
                            transaction = fragmentManager.beginTransaction();
                            transaction.replace(R.id.llContainer, new AllFindWIFragment());
                            transaction.commit();
                        }
fragmentManager = getSupportFragmentManager();

В createView фрагментов AllMyWIFragment и AllFindWIFragment вызывается функция initTabhost():
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  @Override
    public void onAttach(Activity activity) {
        myContext=(FragmentActivity) activity;
        super.onAttach(activity);
    }
 
  private void initTabhost() {
        tabHost = (MaterialTabHost) rootView.findViewById(R.id.materialTabHost);
        pager = (ViewPager) rootView.findViewById(R.id.viewpager);
 
        // init view pager
        pagerAdapter = new GeneralViewPagerAdapter(myContext.getSupportFragmentManager());
        pager.setAdapter(pagerAdapter);
        pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                // when user do a swipe the selected tab change
                tabHost.setSelectedNavigationItem(position);
            }
        });
 
        tabHost.addTab(
                tabHost.newTab()
                        .setIcon(getResources().getDrawable(R.drawable.ic_star_outline_white_24dp))
                        .setTabListener(this)
        );
 
        tabHost.addTab(
                tabHost.newTab()
                        .setIcon(getResources().getDrawable(R.drawable.ic_schedule_white_24dp))
                        .setTabListener(this)
        );
 
        tabHost.addTab(
                tabHost.newTab()
                        .setIcon(getResources().getDrawable(R.drawable.ic_done_white_24dp))
                        .setTabListener(this)
        );
 
        tabHost.addTab(
                tabHost.newTab()
                        .setIcon(getResources().getDrawable(R.drawable.ic_highlight_remove_white_24dp))
                        .setTabListener(this)
        );
 
    }
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
26.07.2015, 11:35 5
Мне кажется проблема в размере вкладок.
if (i == 0) а тут поменяйте на switch
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
26.07.2015, 12:36 6
Цитата Сообщение от Rube Посмотреть сообщение
Мне кажется проблема в размере вкладок.
if (i == 0) а тут поменяйте на switch
Это не ошибка, но стиль программирования плохой... проверка заведомо ложного условия при выполнении первого

Не по теме:

просто пояснил, почему нужно использовать switch or if-else-if



Добавлено через 10 минут
Цитата Сообщение от AndreyAlt86 Посмотреть сообщение
При кликах по элементам NavigationDrawer я делаю так:
К сожалению, внутри фрагментов вкладки не инициализировал... Но внутри фрагментов вызывается
Java
1
getChildFragmentManager
К тому же, если вы устанавливаете вкладки из фрагмента, уберите старые.
Попробуйте вызвать методы invalidate(), requestLayout() у контейнера вкладок
0
AndreyAlt86
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 4
26.07.2015, 16:05  [ТС] 7
Но вроде как раз и инициализируются вкладки через initTabhosts?

Не совсем понял что вы имели ввиду под удалением старых вкладок?
0
AndreyAlt86
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 4
27.07.2015, 19:10  [ТС] 8
contedevel, Эти 2 метода не помогли ((
0
27.07.2015, 19:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2015, 19:10

Реализация фрагмента кода
Народ накидайте код в пару строк, реализовать не пойму как, Timer не хочет чет...

Запуск активности из фрагмента
Доброго всем. Возникла такая проблема, для запуска активности хоста из...

Сохранение состояния фрагмента
Всем привет. Есть куча фрагментов, реализован переход через repalce, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru