使用 NavController 时,有没有一种方法可以在风景中使用一个片段而在肖像中使用其他片段?

Is there a way to use one fragment in landscape and others in portrait when using NavController?

我在我的一个片段上使用条形码扫描器,我需要旋转那个片段来扫描条形码。我尝试在我的单曲 activity 中通过 OnDestinationChangedListener 轮换,但它似乎太昂贵了。我怎样才能更好地做到这一点?

您必须实施 ViewModel 才能处理屏幕旋转情况

以下链接可能对您有所帮助

https://android.jlelse.eu/dive-deep-into-androids-viewmodel-android-architecture-components-e0a7ded26f70

https://developer.android.com/topic/libraries/architecture/viewmodel

是的,您可以在导航到这样的片段时简单地应用片段标志

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  activity?.let {
    it.window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
    it.window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_FULLSCREEN)
   }
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
     super.onViewCreated(view, savedInstanceState)
     activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}