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

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

Войти
Регистрация
Восстановить пароль
 
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
#1

Фрагмент поверх другого - Программирование Android

29.06.2016, 12:04. Просмотров 508. Ответов 7
Метки нет (Все метки)

Меняю фрагменты след. кодом:
Кликните здесь для просмотра всего текста
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
public void fragmentChange(int id, boolean addToBackStack){
        FragmentTransaction fTrans = getSupportFragmentManager().beginTransaction();
        switch (id){
            case Constants.PEOPLE_NEAR_DRAWER_ID:
                fTrans.replace(R.id.frgmCont, new PeopleNear(), Constants.PEOPLE_NEAR_FRAGMENT_TAG);
                if (addToBackStack) fTrans.addToBackStack(Constants.PEOPLE_NEAR_FRAGMENT_TAG);
                fTrans.commit();
                break;
            case Constants.FRIEND_DRAWER_ID:
                fTrans.replace(R.id.frgmCont, new PeopleList(), Constants.PEOPLE_LIST_FRAGMENT_TAG);
                if (addToBackStack) fTrans.addToBackStack(Constants.PEOPLE_LIST_FRAGMENT_TAG);
                fTrans.commit();
                break;
            case Constants.SETTINGS_DRAWER_ID:
                fTrans.replace(R.id.frgmCont, new Settings(), Constants.SETTINGS_FRAGMENT_TAG);
                if (addToBackStack) fTrans.addToBackStack(Constants.SETTINGS_FRAGMENT_TAG);
                fTrans.commit();
                break;
            case Constants.SETTINGS_PROFILE_DRAWER_ID:
                fTrans.replace(R.id.frgmCont, new SettingsProfile(), Constants.SETTINGS_PROFILE_FRAGMENT_TAG);
                if (addToBackStack) fTrans.addToBackStack(Constants.SETTINGS_PROFILE_FRAGMENT_TAG);
                fTrans.commit();
                break;
            case Constants.CHAT_LIST_DRAWER_ID:
                fTrans.replace(R.id.frgmCont, new ChatList(), Constants.CHAT_LIST_FRAGMENT_TAG);
                if (addToBackStack) fTrans.addToBackStack(Constants.CHAT_LIST_FRAGMENT_TAG);
                fTrans.commit();
                break;
            case Constants.DIALOG_EXIT_ID:
                System.exit(0);
                break;
        }
    }



Иногда бывает так что один фрагмент встает на другой .. Вроде и делаю replace, а не add.
И я понять не могу какая там закономерность... Не могу сам сымитировать, всегда получается хз после каких действий.. То при восстановлении приложение из свернутого состояния то при смене фрагментов..

У вас бывало такое? Что за бяка? Как исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2016, 12:04     Фрагмент поверх другого
Посмотрите здесь:

Как сделать RelativeLayout поверх другого? - Программирование Android
Есть основной фрагмент: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout...

Меню, которое выезжает поверх другого - Программирование Android
Как сделать такое меню которое выезжает поверх другого? Пример картинка

Не создается фрагмент - Программирование Android
При запуске приложения отображается фрагмент (fragment1) этот фрагмент имеет кнопку при нажатии на которую запускается другой фрагмент...

CursorLoader и фрагмент - Программирование Android
Возникла проблема. Используя в фрагменте CursorLoader в методе "onLoadFinished()" падает ошибка "Failed to read row 0, column -1 from a...

Фрагмент и карты - Программирование Android
прочитал что MapView должен быть обязательным образом наследован от MapActivity как можно MapActivity превратить в один из фрагментов ? ...

Фрагмент и статическое поле - Программирование Android
В моем приложении динамическая реализация фрагментов. В методе onClick записи типа case R.id.home: ...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
07.07.2016, 10:27  [ТС]     Фрагмент поверх другого #2
Когда делаю addToBackStack и потом обратно по нажатию кнопки "назад" возвращаюсь назад то происходит наложение.. Что это?) Как исправить?
Pablito
2421 / 1866 / 583
Регистрация: 12.05.2014
Сообщений: 6,606
Завершенные тесты: 1
07.07.2016, 11:05     Фрагмент поверх другого #3
где находится этот метод?
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
07.07.2016, 11:14  [ТС]     Фрагмент поверх другого #4
Цитата Сообщение от Паблито Посмотреть сообщение
где находится этот метод?

Я addToBackStack делаю только в двух местах:

Метод находиться в MainActivity, вызывается и с MainActivity и с Фрагментов
Java
1
((MainActivity) getActivity()).fragmentChange(Constants.SETTINGS_PROFILE_DRAWER_ID, true);

Есть один адаптер в котором тоже меняю фрагмент:
Java
1
2
3
4
5
6
7
8
if (ctx instanceof MainActivity){
                Log.d("tyuyt", "ctx instanceof MainActivity)");
                FragmentTransaction fTrans = ((MainActivity) ctx).getSupportFragmentManager().beginTransaction();
                MessageList messageList = new MessageList().newInstance(chatList.get(Position).address_his,   chatList.get(Position).address_title);
                fTrans.replace(R.id.frgmCont, messageList, Constants.MESSAGE_LIST_FRAGMENT_TAG);
                fTrans.addToBackStack(Constants.MESSAGE_LIST_FRAGMENT_TAG);
                fTrans.commit();
            }
Pablito
2421 / 1866 / 583
Регистрация: 12.05.2014
Сообщений: 6,606
Завершенные тесты: 1
07.07.2016, 11:15     Фрагмент поверх другого #5
я про этот fragmentChange
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
07.07.2016, 11:16  [ТС]     Фрагмент поверх другого #6
Паблито, Метод находиться в MainActivity
Pablito
2421 / 1866 / 583
Регистрация: 12.05.2014
Сообщений: 6,606
Завершенные тесты: 1
07.07.2016, 11:19     Фрагмент поверх другого #7
для начала

в активити находТСЯ фрагмент и в него потом добавляюТСЯ другие?
если так то у фрагментов есть свой метод getChildFragmentManager()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2016, 11:50     Фрагмент поверх другого
Еще ссылки по теме:

Переход из ListActivity в Фрагмент - Программирование Android
Всех с праздниками. Подскажите как реализовать переход из Activity в котором есть ListView во фрагмент? (в списоке listView) ...

Фрагмент сжимается в активити - Программирование Android
Первый раз такое встречаю, магия какая-то, может я чего-то еще не знаю. Вот код фрагмента: <?xml version="1.0" encoding="utf-8"?> ...

Как закрыть фрагмент? - Программирование Android
Нужно в самом фрагменте завершить его работу и вернуться обратно, как это реализовать

Доступ из активити в фрагмент - Программирование Android
Здравствуйте, такой вопрос есть активити import java.io.File; import java.io.IOException; import...

Как закрыть фрагмент - Программирование Android
Есть главное активити в котором с помощью фрагментов показывается разный контент. Типа таба с очень большим числом вкладок. Информация для...


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

Или воспользуйтесь поиском по форуму:
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
07.07.2016, 11:50  [ТС]     Фрагмент поверх другого #8
Цитата Сообщение от Паблито Посмотреть сообщение
для начала
спасибо

Буду знать
Цитата Сообщение от Паблито Посмотреть сообщение
в активити находТСЯ фрагмент и в него потом добавляюТСЯ другие?
Да.

Цитата Сообщение от Паблито Посмотреть сообщение
если так то у фрагментов есть свой метод getChildFragmentManager()
Что я с этим должен делать? при нажатии Back стирать ChildFragment?

Добавлено через 4 минуты
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
в активити находТСЯ фрагмент и в него потом добавляюТСЯ другие?
При запуске приложения фрагмента нет. есть только контейнер для фрагментов

Добавлено через 12 минут
Паблито,

Сделал так: Если переход происходит по нажатию кнопки в дравер меню то очищаю стек
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void clearStack(){
        try {
            FragmentManager fragmentManager = getSupportFragmentManager();
            if (fragmentManager == null) return;
            int count = fragmentManager.getBackStackEntryCount();
            while (count > 0) {
                fragmentManager.popBackStack();
                count--;
            }
        } catch (NullPointerException ex){
            ex.printStackTrace();
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }
Yandex
Объявления
07.07.2016, 11:50     Фрагмент поверх другого
Ответ Создать тему
Опции темы

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