169 похожих чатов

Привет, подскажите лучшие решения, которые вы знаете в силу своего

опыта, для отображения вёрстки при ошибке с кнопкой "Повторить" для фрагмента.

Пока что, самый удобный и оптимальный вариант это в layout.xml использовать include и скрывать/показывать вёрстку, а автоматизировать можно связав BaseFragment с BaseViewModel.

Во viewModel держим и управляем LiveData со стейтами экрана, там же делаем функцию fetch() для выполнения действия по нажатию кнопки "Повторить" и реализуем эту функцию в рабочем ViewModel.

А в BaseFragment в конструктор передаём layout и с помощью findViewById() пытаемся найти include. Если он есть, то будем работать с ним, если нет, то ничего не делаем. На стейты подписываемся тут же, в BaseFragment.

Таким образом всё автоматизировано, только в каждый layout придётся добавлять include.

Хорошее ли это решение и какие лучше, подскажите, пожалуйста?

19 ответов

17 просмотров

А если в layout активити сунуть?

Dialog Fragment позволит избавиться от include и от гемора с контролем UI

Dmitry-Aleksandrovich Автор вопроса
Kirill
Dialog Fragment позволит избавиться от include и о...

Он будет рисоваться поверх фрагмента во весь экран и его нельзя будет закрыть свайпом?

Dmitry-Aleksandrovich Автор вопроса
Kirill
Да

Спасибо. Но бывают случаи, когда надо отобразить эту вёрстку под тулбаром, с DialogFragment, как я понимаю, так не получится сделать

Dmitry Aleksandrovich
Спасибо. Но бывают случаи, когда надо отобразить э...

DialogFragment отображается как и обычный диалог, на часть экрана, затемняя то, что под ним

Так вродеж лайвдата уже не модно стильно молодежно?

Dmitry-Aleksandrovich Автор вопроса
Печенье
Так вродеж лайвдата уже не модно стильно молодежно...

Можно StateFlow, просто особо сути не меняет, поэтому я написал про лайвдату

Dmitry Aleksandrovich
Можно StateFlow, просто особо сути не меняет, поэт...

Да вроде норм если тебе прям по все аппке размазывать надо

А не проще ли просто кастомный компонент создать и его и добавлять вместо include? С необходимыми методами (типо fetch)

Dmitry-Aleksandrovich Автор вопроса
𝒜𝓃𝒹𝓇𝑒𝒾 𝒦𝒽𝓇𝑜𝓂𝑜𝓋 (Andrei Khromov)
А не проще ли просто кастомный компонент создать и...

А какой от этого профит? Тут всё связано под капотом в BaseFragment и BaseViewModel, а в кастом вью придется передавать стейт

Так и там можно связать. Просто в наследнике указываешь свою view, а в базовом объявляешь и вызываешь то что хочешь, если она не null. Профит наверное в большем удобстве и чуть большей гибкости

Dmitry-Aleksandrovich Автор вопроса
𝒜𝓃𝒹𝓇𝑒𝒾 𝒦𝒽𝓇𝑜𝓂𝑜𝓋 (Andrei Khromov)
Так и там можно связать. Просто в наследнике указы...

Спасибо, вроде понял про что ты. Ну хз, мне кажется шило на мыло получается

Dmitry Aleksandrovich
Спасибо, вроде понял про что ты. Ну хз, мне кажетс...

По дереву лишний раз не проходишься, экономишь драгоценные ресурсы)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта