Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
AndreyAlt86
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 4
#1

Смена фрагмента в контейнере - Программирование Android

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

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

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

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

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

Доступ к виджету фрагмента - Программирование Android
Пытаюсь добавить фрагмент в контейнер и получить доступ к его кнопке frag1 = new Fragment1(); getSupportFragmentManager() ...

Запуск активности из фрагмента - Программирование Android
Доброго всем. Возникла такая проблема, для запуска активности хоста из фрагмента по нажатию кнопки(mPlayButton), использую...

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

Реализация фрагмента кода - Программирование Android
Народ накидайте код в пару строк, реализовать не пойму как, Timer не хочет чет меня вообще слушаться - Нужен код который будет высчитывать...

Обращение к элементам фрагмента из активити - Программирование Android
Есть необходимость в программе менять значение TextView находящегося во фрагменте. Фрагмент должен выводится в контейнер. И затем я...

TabActivity исчезает содержимое фрагмента - Программирование Android
При запуске фрагмент в первой вкладке запускается нормально, но если перейти в третью вкладку и вернуться в первую то содержимое первой...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
25.07.2015, 23:47     Смена фрагмента в контейнере #2
А на 180 градусов если повернуть что будет?
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
26.07.2015, 01:07     Смена фрагмента в контейнере #3
Цитата Сообщение от AndreyAlt86 Посмотреть сообщение
Проблема такая - есть Navigation Draver, по кликам в котором я хочу менять содержимое контейнера, т.е. реплейсить фрагменты. На данный момент 2 фрагмента. В каждом фрагменте есть TabHost, вкладки которого реализованы так же через фрагменты, т.е. через PageAdapter. При запуске приложения я помещаю в контейнер первый фрагмент. Далее при клике делаю replace на другой фрагмент, но при этом во втором фрагменте не отображаются вкладки. Если же устройство повернуть на 90 градусов, то вкладки появляются. Что мне делать и как мне быть? Уже 3 дня гуглю.
Смотрите внимательно, что замещаете и какой FragmentManager где вызываете... Так Вам вряд ли помогут, выложите код.
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)
        );
 
    }
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
26.07.2015, 11:35     Смена фрагмента в контейнере #5
Мне кажется проблема в размере вкладок.
if (i == 0) а тут поменяйте на switch
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
26.07.2015, 12:36     Смена фрагмента в контейнере #6
Цитата Сообщение от Rube Посмотреть сообщение
Мне кажется проблема в размере вкладок.
if (i == 0) а тут поменяйте на switch
Это не ошибка, но стиль программирования плохой... проверка заведомо ложного условия при выполнении первого

Не по теме:

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



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

Не совсем понял что вы имели ввиду под удалением старых вкладок?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2015, 19:10     Смена фрагмента в контейнере
Еще ссылки по теме:

Передача даных с фрагмента к фрагменту! - Программирование Android
Вопрос возможно глупый но все ж... Искал в инете но ответ на свой вопрос найти не смог. Есть активность которая является хостом для 2...

Активити отрабатывает быстрее фрагмента - Программирование Android
Непонятно поведение фрагмента (FragmentPagerAdapter). Вызываю активити из уведомления, из onCreate вызываю метод meUpdate, где хочу...

Не могу добратьс из фрагмента к Preference - Программирование Android
Хочу заполнить из фрагмента данные из Preference. Ругается в строке 39. Подчеркивает - MODE_PRIVATE Пишет - MODE_PRIVATE cannot be...

Выбор фрагмента на картинке фильтром - Программирование Android
Может быть есть какой-нибудь стандартный способ выбирать кусок картинки, наложив на оставшуюся часть картинки фильтр есть идея, но она...

Обращение к View элементам фрагмента - Программирование Android
Добрый день. Нужна помощь, уже не знаю что делать. Имеется три идентичных фрагмента с одним TextView (id = textview1). Имеется...


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

Или воспользуйтесь поиском по форуму:
AndreyAlt86
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 4
27.07.2015, 19:10  [ТС]     Смена фрагмента в контейнере #8
contedevel, Эти 2 метода не помогли ((
Yandex
Объявления
27.07.2015, 19:10     Смена фрагмента в контейнере
Ответ Создать тему
Опции темы

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