当我更新数据时,我的 proto buff 数据存储不工作问题仅存在于一个片段中我必须更新数据存储中的用户名,并且我在 android jetpack 中使用 protobuff 数据存储,但它在其他片段中工作正常问题出在这个 Otp 片段
@AndroidEntryPoint 类 Otp :Fragment(){
val args: OtpArgs by navArgs()
private val Context.userDataStore: DataStore<UserPreferences> by dataStore(
fileName = DATA_STORE_FILE_NAME,
serializer = UserPreferencesSerializer
)
companion object {
private const val USER_PREFERENCES_NAME = "user_preferences"
private const val DATA_STORE_FILE_NAME = "user_prefs.pb"
private const val SORT_ORDER_KEY = "sort_order"
}
private val otpViewModel: OtpViewModel by navGraphViewModels(R.id.login_nav) {defaultViewModelProviderFactory}
private lateinit var otpFragBinding: OtpFragBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
otpFragBinding = OtpFragBinding.inflate(inflater, container, false).apply {
signupviewmodel = otpViewModel
lifecycleOwner = viewLifecycleOwner
}
setUpOtp(args.username.toString())
setupSnackbar()
setupToolbar()
return otpFragBinding.root
}
fun setupToolbar(){
requireActivity().appBarLayout.visibility = View.GONE
}
private fun setupSnackbar() {
view?.setupSnackbar(this, otpViewModel.snackbarText, Snackbar.LENGTH_SHORT)
}
private fun setUpOtp(arg:String) {
otpViewModel.navigated.observe(
viewLifecycleOwner, EventObserver{
updateUsername(arg)
findNavController().navigate(R.id.mainFragment)
})
}
fun updateUsername(username:String) {
lifecycleScope.launch {
requireActivity().userDataStore.updateData {
preferences ->
preferences.toBuilder().setUsername(username).build()
}
}
}
}