gpt4 book ai didi

Android 导航组件在 Activity 旋转时保留当前 Fragment

转载 作者:行者123 更新时间:2023-12-02 10:10:42 27 4
gpt4 key购买 nike

我有一个带有导航组件的 Activity MVVM 应用程序。当我导航时一切正常。当旋转发生时,我的应用程序崩溃了,所以我使用了

findNavController().navigate(PermissionsFragmentDirections.Action_permissionsFragment_to_splashFragment())

并且应用程序崩溃了。然后我改为

findNavController().navigate(R.id.splashFragment)

现在可以了。奇怪,但这只出现在 onRequestPermissionsResult 中。在其他地方,我像第一个代码示例一样使用它。

我设法解决了这个问题,但现在当我旋转屏幕时,我又回到了 navigation_graph 的开头。

对于导航,我的 activity_home.xml 中有 androidx.navigation.fragment.NavHostFragment

所以我的问题是如何在Activity旋转时保留当前的Fragment

已添加代码

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

Fabric.with(this, Crashlytics())

binding = DataBindingUtil.setContentView(this, R.layout.activity_home)
binding.viewModel = settingsViewModel
binding.lifecycleOwner = this

//small constraintlayout for showing state of app online/offline
constraintLayoutStanje.setOnClickListener {
settingsViewModel.progress()
val id: String = getId(this)
settingsViewModel.settings(id)
}

setObservers()

//all time running task
Handler().postDelayed({
mHandlerTask.run()
}, interval)

}

观察员

fun setObservers() {
//status
settingsViewModel.status.observe(this, Observer {
when (it) {
NacinDelaEnum.ONLINEINT -> this.constraintLayoutStanje.setBackgroundColor(
ContextCompat.getColor(
this,
R.color.greenStat
)
)
NacinDelaEnum.OFFLINE -> this.constraintLayoutStanje.setBackgroundColor(
ContextCompat.getColor(
this,
R.color.redStat
)
)
NacinDelaEnum.ONLINEEXT -> this.constraintLayoutStanje.setBackgroundColor(
ContextCompat.getColor(
this,
R.color.yellowStat
)
)
}
settingsViewModel.doneProgress()
})

//Toast
settingsViewModel.toastMessage.observe(this, Observer {
if (it.isNotEmpty()) {
toast(it)
settingsViewModel.doneToast()
}
})


//progressBar
settingsViewModel.pb.observe(this, Observer {
pb.visible(it)
})

}

activity_home.xml中的NavHostFragment

<fragment
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp" app:navGraph="@navigation/nav_graph" app:defaultNavHost="true"
android:id="@+id/mainFragment" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/constraintLayoutStanje"
app:layout_constraintHorizontal_bias="1.0" app:layout_constraintVertical_bias="1.0"/>

我的nav_graph.xml

enter image description here

提前谢谢

最佳答案

在 list 文件中,

`<activity android:name=".MyActivity"
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
android:label="@string/app_name">`

更多信息, https://developer.android.com/guide/topics/resources/runtime-changes

关于Android 导航组件在 Activity 旋转时保留当前 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57163610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com