Fix navigation reset on configuration change
For example when rotating
This commit is contained in:
parent
ae6c5321e8
commit
9813ff3ed7
2 changed files with 17 additions and 2 deletions
|
@ -4,6 +4,7 @@ import android.app.UiModeManager
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
import androidx.navigation.ui.AppBarConfiguration
|
import androidx.navigation.ui.AppBarConfiguration
|
||||||
|
@ -15,6 +16,7 @@ import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.database.ServerDatabaseDao
|
import dev.jdtech.jellyfin.database.ServerDatabaseDao
|
||||||
import dev.jdtech.jellyfin.databinding.ActivityMainBinding
|
import dev.jdtech.jellyfin.databinding.ActivityMainBinding
|
||||||
import dev.jdtech.jellyfin.utils.loadDownloadLocation
|
import dev.jdtech.jellyfin.utils.loadDownloadLocation
|
||||||
|
import dev.jdtech.jellyfin.viewmodels.MainViewModel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
|
@ -23,6 +25,8 @@ class MainActivity : AppCompatActivity() {
|
||||||
private lateinit var binding: ActivityMainBinding
|
private lateinit var binding: ActivityMainBinding
|
||||||
private lateinit var uiModeManager: UiModeManager
|
private lateinit var uiModeManager: UiModeManager
|
||||||
|
|
||||||
|
private val viewModel : MainViewModel by viewModels()
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var database: ServerDatabaseDao
|
lateinit var database: ServerDatabaseDao
|
||||||
|
|
||||||
|
@ -43,14 +47,18 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
||||||
graph.setStartDestination(R.id.homeFragmentTv)
|
graph.setStartDestination(R.id.homeFragmentTv)
|
||||||
|
navController.setGraph(graph, intent.extras)
|
||||||
}
|
}
|
||||||
|
|
||||||
val nServers = database.getServersCount()
|
val nServers = database.getServersCount()
|
||||||
if (nServers < 1) {
|
if (nServers < 1) {
|
||||||
|
if (!viewModel.startDestinationChanged) {
|
||||||
graph.setStartDestination(R.id.addServerFragment)
|
graph.setStartDestination(R.id.addServerFragment)
|
||||||
|
navController.setGraph(graph, intent.extras)
|
||||||
|
viewModel.startDestinationChanged = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
navController.setGraph(graph, intent.extras)
|
|
||||||
|
|
||||||
if (uiModeManager.currentModeType != Configuration.UI_MODE_TYPE_TELEVISION) {
|
if (uiModeManager.currentModeType != Configuration.UI_MODE_TYPE_TELEVISION) {
|
||||||
val navView: NavigationBarView = binding.navView as NavigationBarView
|
val navView: NavigationBarView = binding.navView as NavigationBarView
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package dev.jdtech.jellyfin.viewmodels
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
|
||||||
|
class MainViewModel : ViewModel() {
|
||||||
|
var startDestinationChanged = false
|
||||||
|
}
|
Loading…
Reference in a new issue