#android #kotlin #android-fragments
#Android #kotlin #android-фрагменты
Вопрос:
Это мой фрагмент:
class InvoicesSettingsFragment : Fragment() {
private lateinit var _navigationHost: NavController
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_invoices_settings, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_navigationHost = requireView().findNavController()
}
}
Я хотел бы записать предыдущее имя фрагмента в текущем фрагменте. Как я могу получить имя предыдущего фрагмента? Я перепробовал все свойства, определенные в NavController
( _navigationHost
), но безуспешно. Единственная другая возможность, которую я имею в виду, это передать его имя в качестве аргумента во время навигации.
Ответ №1:
Что вы подразумеваете под именем фрагмента?
Если вам нужна метка fragmnet в nav_graph
, вы можете получить backStack
свойство NavController
val backStack = findNavController().backStack.toList()
if (bacStack.size > 1) {
val prevDest = backStack[backStack.size - 2]
prevDest.destination.label // the label of the previous fragment
}
Комментарии:
1. Я полагаю, что свойство backStack больше не существует в NavController. Вместо этого вы можете использовать findNavController().Обратная очередь.