小编dav*_*sjp的帖子

如何在布局编辑器上启用标尺?

我在Android Studio中看到了一些布局编辑器,在预览窗口的顶部和侧面都有一个标尺,我试图找出如何启用,任何想法?我正在使用Android Studio 3.0.1而我看不到它们.

在此输入图像描述

user-interface android android-layout android-studio

9
推荐指数
1
解决办法
950
查看次数

已注册具有给定键的 SavedStateProvider

我目前正在尝试使用savedState 的新Jetpack ViewModel。

    implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01'
Run Code Online (Sandbox Code Playgroud)

我正在使用 1 个活动并尝试与 2 个片段共享 1 个 ViewModel,但是当我尝试启动第二个片段时,我从标题中收到错误消息。

这就是我使用savedInstance调用ViewModel的方式:

    val repository = (activity?.application as App).getRepository()
    viewModel = activity?.run {
        ViewModelFactory(repository, this, savedInstanceState).create(MainViewModel::class.java)
    } ?: throw Exception("Invalid Activity")
Run Code Online (Sandbox Code Playgroud)

这是我的日志:

java.lang.IllegalArgumentException: SavedStateProvider with the given key is already registered
    at androidx.savedstate.SavedStateRegistry.registerSavedStateProvider(SavedStateRegistry.java:111)
    at androidx.lifecycle.SavedStateHandleController.attachToLifecycle(SavedStateHandleController.java:50)
    at androidx.lifecycle.SavedStateHandleController.create(SavedStateHandleController.java:70)
    at androidx.lifecycle.AbstractSavedStateViewModelFactory.create(AbstractSavedStateViewModelFactory.java:67)
    at androidx.lifecycle.AbstractSavedStateViewModelFactory.create(AbstractSavedStateViewModelFactory.java:84)
    at com.xxx.yyy.presentation.details.DetailsFragment.onCreate(DetailsFragment.kt:29)
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:2586)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:838)
    at androidx.fragment.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1197)
    at androidx.fragment.app.FragmentTransition.calculateFragments(FragmentTransition.java:1080)
    at androidx.fragment.app.FragmentTransition.startTransitions(FragmentTransition.java:119)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1866)
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
    at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
    at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
Run Code Online (Sandbox Code Playgroud)

看起来它正在尝试使用已经注册的 SavedState 并因此出现错误?我认为这就是图书馆的全部意义所在。任何人都可以帮助或指出如何使用此传递参数到 ViewModel 并使用 savedStateHandle?

android android-fragments android-viewmodel android-jetpack androidx

4
推荐指数
1
解决办法
3450
查看次数