Я новичок и работаю над проектом Android, используя Hilt для внедрения зависимостей и компонент навигации для навигации. У меня есть один MainActivity в качестве хоста и два фрагмента: HomeFragment и DetailFragment.
Поток навигации работает нормально, когда я перехожу от HomeFragment к DetailFragment. Однако когда я пытаюсь вернуться назад, экран гаснет, и ни один из фрагментов не отображается.
MainActivity
`@AndroidEntryPoint
class MainActivity : BaseActivity() {
@Inject
lateinit var featuresNavigation: FeaturesNavigation
private val viewModel: MainViewModel by viewModels()
override fun getVM(): MainViewModel = viewModel
private lateinit var startDestination: Pair
override val layoutId = R.layout.activity_main
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host) as NavHostFragment
featuresNavigation.bind(navHostFragment)
with(intent) {
initGraph(this)
data = null
replaceExtras(Bundle())
}
}
private fun initGraph(intent: Intent?) {
startDestination = createStartDestination(intent)
if (startDestination.first == R.id.homeFragment) {
Timber.e("MainAct test initGraph")
featuresNavigation.setGraph(
R.navigation.main_navigation,
startDestination.first,
startDestination.second
)
}
}
private fun createStartDestination(intent: Intent?): Pair {
val bundle = intent?.getBundleExtra(Constants.KeyParam.KEY_EXTRAS)
return when (intent?.action) {
else -> {
R.id.homeFragment to null
}
}
}
}`
ActivityMain.xml
`
`
HomeFragment
`@AndroidEntryPoint
class HomeFragment :
BaseFragment(R.layout.fragment_home) {
@Inject
lateinit var featuresNavigation: FeaturesNavigation
private val viewModel: HomeViewModel by viewModels()
override fun getVM() = viewModel
override fun initView(savedInstanceState: Bundle?) {
super.initView(savedInstanceState)
activity?.window?.setBackgroundDrawable(null)
featuresNavigation.openDetail()
}
}`
DetailFragment
`@AndroidEntryPoint
class DetailFragment :
BaseFragment(R.layout.fragment_detail) {
@Inject
lateinit var featuresNavigation: FeaturesNavigation
private val viewModel: DetailViewModel by viewModels()
override fun getVM() = viewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// TODO: Use the ViewModel
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment_detail, container, false)
}
override fun onBackPressed() {
featuresNavigation.navigateUp()
}
}`
AppNavigatorImpl
`@ActivityScoped
class AppNavigatorImpl @Inject constructor() : BaseNavigatorImpl(), FeaturesNavigation {
override fun openDetail(bundle: Bundle?) {
openScreen(R.id.action_homeFragment_to_detailFragment, bundle, R.id.detailFragment)
}
}`
Навигация по функциям
interface FeaturesNavigation : BaseNavigator {
fun openDetail(bundle: Bundle? = null)
}
main_navigation.xml
`
`
Подробнее здесь: https://stackoverflow.com/questions/793 ... -component
Проблема с пустым экраном при навигации вверх или назад с помощью рукоятки и компонента навигации ⇐ Android
Форум для тех, кто программирует под Android
1735267152
Anonymous
Я новичок и работаю над проектом Android, используя Hilt для внедрения зависимостей и компонент навигации для навигации. У меня есть один MainActivity в качестве хоста и два фрагмента: HomeFragment и DetailFragment.
Поток навигации работает нормально, когда я перехожу от HomeFragment к DetailFragment. Однако когда я пытаюсь вернуться назад, экран гаснет, и ни один из фрагментов не отображается.
[b]MainActivity[/b]
`@AndroidEntryPoint
class MainActivity : BaseActivity() {
@Inject
lateinit var featuresNavigation: FeaturesNavigation
private val viewModel: MainViewModel by viewModels()
override fun getVM(): MainViewModel = viewModel
private lateinit var startDestination: Pair
override val layoutId = R.layout.activity_main
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host) as NavHostFragment
featuresNavigation.bind(navHostFragment)
with(intent) {
initGraph(this)
data = null
replaceExtras(Bundle())
}
}
private fun initGraph(intent: Intent?) {
startDestination = createStartDestination(intent)
if (startDestination.first == R.id.homeFragment) {
Timber.e("MainAct test initGraph")
featuresNavigation.setGraph(
R.navigation.main_navigation,
startDestination.first,
startDestination.second
)
}
}
private fun createStartDestination(intent: Intent?): Pair {
val bundle = intent?.getBundleExtra(Constants.KeyParam.KEY_EXTRAS)
return when (intent?.action) {
else -> {
R.id.homeFragment to null
}
}
}
}`
[b]ActivityMain.xml[/b]
`
`
[b]HomeFragment[/b]
`@AndroidEntryPoint
class HomeFragment :
BaseFragment(R.layout.fragment_home) {
@Inject
lateinit var featuresNavigation: FeaturesNavigation
private val viewModel: HomeViewModel by viewModels()
override fun getVM() = viewModel
override fun initView(savedInstanceState: Bundle?) {
super.initView(savedInstanceState)
activity?.window?.setBackgroundDrawable(null)
featuresNavigation.openDetail()
}
}`
[b]DetailFragment[/b]
`@AndroidEntryPoint
class DetailFragment :
BaseFragment(R.layout.fragment_detail) {
@Inject
lateinit var featuresNavigation: FeaturesNavigation
private val viewModel: DetailViewModel by viewModels()
override fun getVM() = viewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// TODO: Use the ViewModel
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment_detail, container, false)
}
override fun onBackPressed() {
featuresNavigation.navigateUp()
}
}`
[b]AppNavigatorImpl[/b]
`@ActivityScoped
class AppNavigatorImpl @Inject constructor() : BaseNavigatorImpl(), FeaturesNavigation {
override fun openDetail(bundle: Bundle?) {
openScreen(R.id.action_homeFragment_to_detailFragment, bundle, R.id.detailFragment)
}
}`
[b]Навигация по функциям[/b]
interface FeaturesNavigation : BaseNavigator {
fun openDetail(bundle: Bundle? = null)
}
[b]main_navigation.xml[/b]
`
`
Подробнее здесь: [url]https://stackoverflow.com/questions/79310796/blank-screen-issue-on-navigate-up-or-back-with-hilt-and-navigation-component[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия