Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

29.06.2016, 12:04. Просмотров 753. Ответов 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.
И я понять не могу какая там закономерность... Не могу сам сымитировать, всегда получается хз после каких действий.. То при восстановлении приложение из свернутого состояния то при смене фрагментов..

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

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

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

Отображение активити поверх другого активити - Программирование Android
Ребят подскажите пожалуйста как такое сделать. Есть активити с картой, по нажатию кнопки настройки, нужно открыть активити с настройками,...

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

Активити и фрагмент - Программирование Android
в фрагменте у меня есть функция public void setBmp(Bitmap bmp) { } в активити я использую Fragment f =...

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

7
ILNAR_93
Android
231 / 231 / 25
Регистрация: 19.01.2013
Сообщений: 1,749
Записей в блоге: 3
07.07.2016, 10:27  [ТС] #2
Когда делаю addToBackStack и потом обратно по нажатию кнопки "назад" возвращаюсь назад то происходит наложение.. Что это?) Как исправить?
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
07.07.2016, 11:05 #3
где находится этот метод?
0
ILNAR_93
Android
231 / 231 / 25
Регистрация: 19.01.2013
Сообщений: 1,749
Записей в блоге: 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();
            }
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
07.07.2016, 11:15 #5
я про этот fragmentChange
0
ILNAR_93
Android
231 / 231 / 25
Регистрация: 19.01.2013
Сообщений: 1,749
Записей в блоге: 3
07.07.2016, 11:16  [ТС] #6
Паблито, Метод находиться в MainActivity
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
07.07.2016, 11:19 #7
для начала

в активити находТСЯ фрагмент и в него потом добавляюТСЯ другие?
если так то у фрагментов есть свой метод getChildFragmentManager()
0
ILNAR_93
Android
231 / 231 / 25
Регистрация: 19.01.2013
Сообщений: 1,749
Записей в блоге: 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();
        }
    }
0
07.07.2016, 11:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2016, 11:50
Привет! Вот еще темы с ответами:

Фрагмент во фрагменте - Программирование Android
Добрый день. А возможно ли создание фрагмента состоящего из нескольких фрагментов?

Из Активити в Фрагмент - Программирование Android
Как передать данные из активити в фрамгент? пробую так но выкидывает из приложения Fragment f =...

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

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


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

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

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