带有导航组件的backpack



在两个片段上使用导航组件,我的应用程序当前在调用navigateUp()(使用setupActionBarWithNavController()(时销毁了一个片段,因此当我输入已删除的片段时,所有进度都会丢失,我正试图改变我将片段添加到后台(并且只有一个片段实例(的做法,但我一直在努力。。。

这里有一些代码:

主要活动:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
loginRepository = LoginRepository()
if (!loginRepository.checkLoggedInState()) {
goToLoginActivity()
}
Log.d("FirebaseMain", "onCreate: ${loginRepository.checkLoggedInState()}")
//MyApplication.app.currentUser
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
navController = Navigation.findNavController(this, R.id.nav_host_fragment)
// setup custom action bar
setSupportActionBar(findViewById(R.id.toolbar))
// adds a return button in the ActionBar.
NavigationUI.setupActionBarWithNavController(this, navController)
}

FormFragment:

(我想保存它的进度并添加到后台的片段(

class FormFragment : Fragment() {
private lateinit var binding: FragmentFormBinding
private val checkListRecyclerAdapter = CheckListRecyclerAdapter(
hashMapOf(
0 to "mirrors",
1 to "blinkers1",
2 to "blinkers11",
3 to "blin4kers",
4 to "blink3e1123rs",
5 to "blink6ers",
6 to "blin53kers",
7 to "blin8kers",
8 to "blin7kers",
9 to "blin43kers",
10 to "blin32kers",
11 to "blin322kers",
)
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_form, container, false)
binding.rvCheckList.apply {
// this is used to load the data sequentially from top to bottom,
this.layoutManager = LinearLayoutManager(context)
// the adapter that loads the data into the list
this.adapter = checkListRecyclerAdapter
}
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
}

提前感谢您的帮助!

我一直在努力解决类似的问题。导航组件中的片段不保持其状态。如果在导航时保持数据进度,则需要创建一个作用域为导航图的SharedViewModel。

片段中:

private val navGraphScopedViewModel by navGraphViewModels<NavGraphViewModel>(R.id.your_nav_graph)

创建这个类:

class NavGraphViewModel : ViewModel() {
var sharedData=  CustomObject()
}

从您的所有片段中,您可以访问和设置数据:

val data = navGraphScopedViewModel.sharedData

我希望我帮过你

相关内容

  • 没有找到相关文章

最新更新