|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
||||||||||||||||
Создание родительского класса для трёх почти одинаковых фрагментов12.10.2022, 18:06. Показов 627. Ответов 16
Метки нет (Все метки)
Здравствуйте. Имеется приложении по конвертации валют, длины и объёма. Под каждую задачу написаны фрагменты, которые являются почти идентичными. Их код почти одинаковый, и требуется как-то упростить это дело. Например, создать родительский класс, от которого они могли бы наследоваться. Но каким образом можно это сделать, если в каждом из этих классов разный binding, из которого, однако, достаются одни и те же элементы. Вот код трёх этих классов.
binging, соответственно разный, поскольку используются три разных layout, в которых различаются элементы внутрри спиннера. скриншот интерфейса,на всякий случай, прикрепляю: MoneyFragment.kt:
FragmentVolume.kt:
0
|
||||||||||||||||
| 12.10.2022, 18:06 | |
|
Ответы с готовыми решениями:
16
Повторное создание фрагмента внутри фрагмента ViewPager Вырезать фрагмент из wav файла и сохранить этот фрагмент в новый файл. Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити |
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 12.10.2022, 18:14 | |
|
Я не вижу на скринах никаких отличий в разметке, значит можно сделать 1 разметку на все фрагменты.
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
|
| 12.10.2022, 18:24 [ТС] | |
|
ExFau$t, Разница в том, какой массив лежит в спиннере. А три фрагмента у меня ещё есть, потому что присутствует ViewPager2,чтоб можно было листать их.
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 12.10.2022, 18:25 | |
|
Это один и тот же фрагмент листается, отличаются только данные.
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
|
| 12.10.2022, 18:31 [ТС] | |
|
ExFau$t, то есть, предлагаешь внутри одного фрагмента просто через when менять содержимое спиннера?)
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 12.10.2022, 18:52 | |
|
Фрагмент один, но экземпляры класса разные, так что не менять, а засеттить.
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
||||||
| 12.10.2022, 20:12 [ТС] | ||||||
|
ExFau$t, вот мой код вьюпейджера, мне просто везде поставить один и тот же фрагмент и в конструктор просто передавать тип нужного конвертера?
0
|
||||||
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 12.10.2022, 21:57 | |
|
Как хочешь, можно и разные сделать с базовым классом, но использующие одну и ту же разметку.
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
|
| 13.10.2022, 12:22 [ТС] | |
|
ExFau$t, да не, я не совсем понял просто, как создать разные экземляры класса в данном случае
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 13.10.2022, 12:28 | |
|
Передавать в ViewPager один и тот же фрагмент с разными аргументами.
1
|
|
|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
|
| 13.10.2022, 13:05 [ТС] | |
|
ExFau$t, а, значит, я правильно предлагал, спасибо)
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
||
| 13.10.2022, 13:09 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
|
| 13.10.2022, 13:40 [ТС] | |
|
ExFau$t, Можете,пожалуйста, предложить, каким образом мне передать фрагменты и эти параметры, исходя из кода ViewPager, который я представил выше?
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 13.10.2022, 14:26 | |
Сообщение было отмечено de1ukc как решение
Решение
Так я же сказал, вместо передачи параметров через конструктор, передавать их через arguments у каждого фрагмента. После создания фрагмента внутри него уже вытаскивать из arguments.
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
|
| 16.10.2022, 19:02 [ТС] | |
|
ExFau$t, Да, я смог запустить эти разные фрагменты, как ты сказал, только теперь проблема в том, что при изменении на одном фрагменте, всё через LiveData меняется во всех, можете посоветовать, как это пофиксить?
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 16.10.2022, 19:05 | |
|
Ну, очевидно, подписывать их на разные LiveData.
1
|
|
|
0 / 0 / 0
Регистрация: 24.09.2021
Сообщений: 63
|
|
| 20.10.2022, 17:14 [ТС] | |
|
ExFau$t, Забыл ответить, да, я просто создал для каждого фрагмента свою LiveData. Просто мне не нравилось это решением тем, что нужно затем писать when() и писать кейс для каждого объекта, грубо говоря. В зависимости от того, какое поле Type у объекта. (Money,Length или Volume)
0
|
|
| 20.10.2022, 17:14 | |
|
Помогаю со студенческими работами здесь
17
Вызов фрагмента с RecycleView из другого фрагмента Передача объекта не сериализуемого класса от дочерней Activity к родительской Почта под Android: выбрасывается исключение при создании объекта класса URLName
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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 - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|