Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3

Фрагмент поверх другого

29.06.2016, 12:04. Показов 6954. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2016, 12:04
Ответы с готовыми решениями:

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

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

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

7
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
07.07.2016, 10:27  [ТС]
Когда делаю addToBackStack и потом обратно по нажатию кнопки "назад" возвращаюсь назад то происходит наложение.. Что это?) Как исправить?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.07.2016, 11:05
где находится этот метод?
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
07.07.2016, 11:14  [ТС]
Цитата Сообщение от Паблито Посмотреть сообщение
где находится этот метод?

Я 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
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.07.2016, 11:15
я про этот fragmentChange
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
07.07.2016, 11:16  [ТС]
Паблито, Метод находиться в MainActivity
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.07.2016, 11:19
для начала

в активити находТСЯ фрагмент и в него потом добавляюТСЯ другие?
если так то у фрагментов есть свой метод getChildFragmentManager()
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
07.07.2016, 11:50  [ТС]
Цитата Сообщение от Паблито Посмотреть сообщение
для начала
спасибо

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

Цитата Сообщение от Паблито Посмотреть сообщение
если так то у фрагментов есть свой метод 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.07.2016, 11:50
Помогаю со студенческими работами здесь

Блок поверх другого
Не получается установить блок content по верх блока doska, после того как вставил в doska изображение, оно выталкивает блок content....

Текст поверх другого текста
Подскажите, как реализовать написание одного текста поверх другого? Задача моя такова: есть некий отформатированный(например, курсив)...

Обьект поверх другого обьекта
Здравствуйте, вот такая проблемма. У меня есть RichEdit на форме, мне нужно поверх него положить картинку, но она рисуется позати. Тыщу раз...

Наложение блока поверх другого
Как избежать такой штуки? <!DOCTYPE html> <html> <head> <title>j-FROST.com</title> <meta...

наложение виджета поверх другого
Подскажите как наложить виджет(например чекбокс) поверх другого виджета на экране? гуглил, гуглил, ничего путного не нашел. Заранее спасибо!


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru