小编sol*_*aza的帖子

清除共享视图模型

我正在使用 Koin 将 viewModel 注入片段。我的应用程序是单一活动。我只需要在 servisFragment 和 partFragment 中使用 sharedViewModel。我想在用红色标记的导航后从 Activity 中清除该 viewModel。

我怎样才能做到这一点?

导航

注入viewModel的代码

    private val servisViewModel by sharedViewModel<ServisViewModel>()
Run Code Online (Sandbox Code Playgroud)

Koin 共享视图模型

inline fun <reified T : ViewModel> Fragment.sharedViewModel(
    name: String? = null,
    noinline from: ViewModelStoreOwnerDefinition = { activity as 
    ViewModelStoreOwner },
    noinline parameters: ParametersDefinition? = null
) = lazy { getSharedViewModel<T>(name, from, parameters) }
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助。

android kotlin android-viewmodel koin android-jetpack

10
推荐指数
1
解决办法
1671
查看次数

Kotlin 协程选择 Dispatcher

我试图弄清楚在什么情况下使用哪个 Dispatcher。

我阅读了一些文档并想出了这个:

  • 默认 ?CPU工作
  • 主要的 ?主要(更新用户界面)
  • 无拘无束
  • IO ? 写文件/网络任务

这是正确的吗?

无拘无束呢?

kotlin kotlin-coroutines

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

5
推荐指数
2
解决办法
2771
查看次数

Android 导航组件在 Activity 旋转时保留当前 Fragment

我有一个带有导航组件的 Activity MVVM 应用程序。当我导航时一切正常。当旋转发生时,我的应用程序崩溃了,所以我使用了

findNavController().navigate(PermissionsFragmentDirections.Action_permissionsFragment_to_splashFragment())
Run Code Online (Sandbox Code Playgroud)

并且应用程序崩溃了。然后我改为

findNavController().navigate(R.id.splashFragment)
Run Code Online (Sandbox Code Playgroud)

现在这有效了。奇怪,但这只出现在onRequestPermissionsResult. 在其他地方,我像第一个代码示例一样使用它。

我设法解决了这个问题,但现在当我旋转屏幕时,我又回到了navigation_graph.

为了导航,我androidx.navigation.fragment.NavHostFragment里面有activity_home.xml

所以我的问题是如何保持Fragment轮换电流Activity

添加了代码

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    Fabric.with(this, Crashlytics())

    binding = DataBindingUtil.setContentView(this, R.layout.activity_home)
    binding.viewModel = settingsViewModel
    binding.lifecycleOwner = this

    //small constraintlayout for showing state of app online/offline
    constraintLayoutStanje.setOnClickListener {
        settingsViewModel.progress()
        val id: String = getId(this)
        settingsViewModel.settings(id)
    }

    setObservers()

    //all time running task
    Handler().postDelayed({
        mHandlerTask.run()
    }, interval)

}
Run Code Online (Sandbox Code Playgroud)

观察员

fun setObservers() {
    //status
    settingsViewModel.status.observe(this, Observer {
        when (it) …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack android-architecture-navigation

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

Java Random 和 Kotlin Random 的区别

RandomJava和 Kotlin之间有什么区别Random?他们使用相同的算法吗?

java random kotlin

2
推荐指数
1
解决办法
478
查看次数

Kotlin 字符串转 Int 或零(默认值)

我怎样才能隐蔽StringInt在科特林,如果不能则返回0(默认值)。

kotlin

1
推荐指数
2
解决办法
2094
查看次数