Size: a a a

Android arch. components

2019 June 09

N

Nick in Android arch. components
Andrey Akimov
Всем привет. Кто-то использовал navigation architecture component? Столкнулся с небольшой траблой - у меня SingleFragmentActivity приложение. Использую для навигации BottomNavigationView (далее bnv).  Разметка bnv находится в неком ParentFragment, в середине (в смысле в разметке) которого контейнер, в котором я меняю фрагменты, в зависимости от выбранного пункта bnv (сам ParentFragmen находится в контейнере, указанном в разметке activity). Проблема в следующем - не на всех фрагментах мне нужен bnv, т.е. некоторые фрагменты должны находиться в контейнере ParentFragment (т.е. отображать bnv, тулбар этого фрагмента и т.д), а некоторые фрагменты должны открываться на весь экран. Каким образом можно имея 1 activity, заиметь отдельный NavController во фрагменте? Буду рад любой помощи, спасибо
Можно делать вложенные NavHostFragment внутри NavHostFragment
источник

N

Nick in Android arch. components
Пускай в одном из фрагментов главного графа лежит вложенный NavHostFragment, который будет оперировать фрагментами-страницами и BottomNavigationView
источник

AA

Andrey Akimov in Android arch. components
Nick
Пускай в одном из фрагментов главного графа лежит вложенный NavHostFragment, который будет оперировать фрагментами-страницами и BottomNavigationView
пытался и сейчас пытаюсь так сделать, в этом и суть моего вопроса, но не работает, приложение просто падает, якобы в разметке фрагмента нет NavController
источник

N

Nick in Android arch. components
Andrey Akimov
пытался и сейчас пытаюсь так сделать, в этом и суть моего вопроса, но не работает, приложение просто падает, якобы в разметке фрагмента нет NavController
А как NavController получаете для вложенного?
источник

AA

Andrey Akimov in Android arch. components
Nick
А как NavController получаете для вложенного?
через Navigation.findNavController(View); - падает, якобы в моей вьюхе нет контроллера
если через NavHostFragment.findNavController(this); - приложение запускается, но при смене фрагмента падает с ошибкой - is unknown to this NavController
источник

N

Nick in Android arch. components
Andrey Akimov
через Navigation.findNavController(View); - падает, якобы в моей вьюхе нет контроллера
если через NavHostFragment.findNavController(this); - приложение запускается, но при смене фрагмента падает с ошибкой - is unknown to this NavController
Указывали ли вы явно в главном графе что он ссылается на nested graph?
источник

AA

Andrey Akimov in Android arch. components
Nick
Указывали ли вы явно в главном графе что он ссылается на nested graph?
Да, указал
источник

VV

Vuka Vaka in Android arch. components
ребят, напомните, а в Room при изпользовании @Insert можно получить какой-то callback об успешности операции? или там все в одном потоке и если exception не получил, то все ок?
источник

AY

Aleksandr Yurkovskiy in Android arch. components
Vuka Vaka
ребят, напомните, а в Room при изпользовании @Insert можно получить какой-то callback об успешности операции? или там все в одном потоке и если exception не получил, то все ок?
на каком потоке вызвал, там операция и выполняется
источник

АГ

Артём Грачёв in Android arch. components
Vuka Vaka
ребят, напомните, а в Room при изпользовании @Insert можно получить какой-то callback об успешности операции? или там все в одном потоке и если exception не получил, то все ок?
If the @Insert method receives only 1 parameter, it can return a long, which is the new rowId for the inserted item. If the parameter is an array or a collection, it should return long[] or List<Long> instead.

For more details, see the reference documentation for the @Insert annotation, as well as the SQLite documentation for rowid tables.
источник

VV

Vuka Vaka in Android arch. components
Артём Грачёв
If the @Insert method receives only 1 parameter, it can return a long, which is the new rowId for the inserted item. If the parameter is an array or a collection, it should return long[] or List<Long> instead.

For more details, see the reference documentation for the @Insert annotation, as well as the SQLite documentation for rowid tables.
да, я вот это находил, но не до конца понял, хотя щас перечитал... то есть я могу указать long в качестве возвращемого знаения и в случае успеха мне будет возвращаться номер строки в базе, куда записалось, так же?
источник

P

Paul in Android arch. components
Aleksandr Yurkovskiy
на каком потоке вызвал, там операция и выполняется
тут про то, что сама операция происходит не асинхронно же?
источник

AY

Aleksandr Yurkovskiy in Android arch. components
Paul
тут про то, что сама операция происходит не асинхронно же?
да
источник

АГ

Артём Грачёв in Android arch. components
Vuka Vaka
да, я вот это находил, но не до конца понял, хотя щас перечитал... то есть я могу указать long в качестве возвращемого знаения и в случае успеха мне будет возвращаться номер строки в базе, куда записалось, так же?
Да, если вы записываете одно значение
источник

АГ

Артём Грачёв in Android arch. components
Если несколько, соответственно лист или массив
источник

АГ

Артём Грачёв in Android arch. components
Записать так же можно через Query
источник

VV

Vuka Vaka in Android arch. components
Артём Грачёв
Если несколько, соответственно лист или массив
да, вроде ок работает, спасибо)
источник

ST

Sasha Tainyuk in Android arch. components
С этим insert прикол есть, если забыть указать конфликт стратегию, то при добавление в бд будет исключение и в логах ничего не покажет внятного. Будет типичное для нативщины сообщение типа fatal error signal чета там, не помню что уже писало.
источник

VV

Vuka Vaka in Android arch. components
Sasha Tainyuk
С этим insert прикол есть, если забыть указать конфликт стратегию, то при добавление в бд будет исключение и в логах ничего не покажет внятного. Будет типичное для нативщины сообщение типа fatal error signal чета там, не помню что уже писало.
Ну я по умолчанию ставлю replace для conflict и проблем не знаю такого плана)
источник

ST

Sasha Tainyuk in Android arch. components
Vuka Vaka
Ну я по умолчанию ставлю replace для conflict и проблем не знаю такого плана)
Не всегда подходит и в этот раз я тупо забыл, инспекций на это нет. Поэтому можно с лёгкостью проэтовать этот момент
источник