Проблема с пустым экраном при навигации вверх или назад с помощью рукоятки и компонента навигацииAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с пустым экраном при навигации вверх или назад с помощью рукоятки и компонента навигации

Сообщение Anonymous »

Я новичок и работаю над проектом 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»