小编Ant*_*nov的帖子

Android导航组件saveState和restoreState

伙计们,我需要你们的帮助。

我使用 android 导航组件,想要在用户按下按钮后保存 backstack 并在之后恢复它。我找到了2个方法

navController.saveState(): BundlenavController.restoreState(bundle: Bundle)

但我在使用它时遇到问题。看起来 saveState 工作得很好(我看到了包和里面的 backstack),但我不明白如何使用 RestoreState,因为文档说:

从包中恢复所有导航控制器状态。这应该在调用 setGraph 之前调用。

https://developer.android.com/reference/kotlin/androidx/navigation/NavController#restorestate

好吧,我做到了,似乎后退堆栈已恢复,但在屏幕上我看到第一个片段(而不是我保存时的片段)。我做错了什么?

代码:

第一个片段

    private val TAG = this::class.java.name

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_first, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        btn_forward.setOnClickListener { findNavController().navigate(R.id.action_firstFragment_to_secondFragment) }
        btn_back.setOnClickListener { requireActivity().onBackPressed() }
    }

}

Run Code Online (Sandbox Code Playgroud)

第二个片段

class SecondFragment : Fragment() {
    private val TAG …
Run Code Online (Sandbox Code Playgroud)

android kotlin

7
推荐指数
1
解决办法
4533
查看次数

标签 统计

android ×1

kotlin ×1