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

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

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

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

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

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

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

Вызов фрагмента с RecycleView из другого фрагмента
Добрый день! Написал код, который из одного фрагмента (А) через кнопку вызывает другой фрагмент...

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

Выделение фрагмента строки и создание новой на основе этого фрагмента
У меня есть переменная var a = 'file:///D:/папка/myfile.jpg' Мне нужно выделить из переменной a...

Как прочитать многострочные данные из файла с указанного фрагмента до указанного фрагмента?
Всех с наступающим! Есть файл с содержанием: Database: vip_stroitel Table: material ...

7
Rube
912 / 560 / 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
26.07.2015, 07:26
Rube
912 / 560 / 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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2015, 19:10

Смена лицензии Битрикс, смена владельца сайта
Всем привет! Вопрос не тривиальный, но, возможно, кто-нибудь сталкивался. Ситуация такова, что...

Контейнер в контейнере
Имеется UserControl типа контейнер, внутри его другой контейнер Picture1. Возможно ли средствами...

Контейнер в контейнере
Необходимо реализовать хранилище данных. Бинарное дерево, в каждом элементе которого стек. Для...


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

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

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