- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我试图通过将我的一些 ViewModel 实例移动到一个抽象基类中来减少 Dagger 的一些样板,但找不到一个很好的方法来做到这一点。我的 Intent 是从我的基本 fragment 中实例化我的所有 ViewModel,以便它们准备好被所有子 fragment 使用,而无需让它们自己进行实例化。我的问题在于使用通用(VM)检索 ViewModel - 特别是在这里: .get(viewModel::class.java)
。我还尝试了不允许的 .get(VM::class.java)
BaseFragment
abstract class BaseFragment<VM : ViewModel> : Fragment() {
@Inject lateinit var viewModelFactory: ViewModelProvider.Factory
lateinit var viewModel : VM
override fun onAttach(context: Context?) {
super.onAttach(context)
viewModel = ViewModelProviders.of(this, viewModelFactory).get(viewModel::class.java)
}
}
ViewModelProviders.get(...) 方法签名
public <T extends ViewModel> T get(@NonNull Class<T> modelClass)
这可能吗?
最佳答案
val viewModel: T by lazy {
ViewModelProviders.of(this).get(getTClass())
}
//获取泛型T的实际类型
private fun getTClass(): Class<T> {
return (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<T>
}
关于android - 基类中的 ViewModelProviders.get(...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48892551/
我看到两个名称相似的类,ViewModelProviders 和 ViewModelProvider。任何人都可以解释这些类(class)之间的区别是什么?哪个类实际提供了 ViewModel? 最佳
我正在尝试创建可感知生命周期的 View 模型。但是我在我的 Android 项目中找不到 ViewModelProviders 类,只有 ViewModelProvider。似乎也没有 androi
我目前正在将我的项目架构从 MVP 转换为 MVVM。当我在研究它时,我发现有些事情让我感到困惑: 在项目iosched的ScheduleViewModelFactory.kt中,工厂实现ViewMo
由于所说的贬值,我不再使用 ViewModelProviders.of(this)。我研究了其他问题并使用了答复中的代码。所有代码都没有错误,但当我尝试运行该应用程序时,出现异常。 此处发生错误。 P
我有一个在我的“MainActivity.java”上启动的模型,其名称如下: //MainActivity.java (public class MainActivity extends AppCo
我正在研究 Android ViewModel 架构组件,但在尝试在 AppCompatActivity 中初始化 ViewModel 时出现上述错误。 import android.arch.lif
“ViewModelProviders”已从 androidx.lifecycle:lifecycle-*:2.2.0-alpha03 中弃用 https://developer.android.co
我想重新使用 ViewModel 和 LiveData 从 Firebase 读取节点。这是我在 Fragment 中的代码 FirebaseDatabaseViewModel tes
我正在尝试使用 View 模型,但是遇到了一个奇怪的错误,编译器说它无法识别“of”。我已经在我的 build.gradle 中导入了依赖项并像这样同步 def ver = "1.1.1" impl
我使用 ViewModelProviders。但是今天,更新库后,有30条消息。据我所知,ViewModelProviders 不再可用,您需要替换它,我查看了 developer.google,但不
我正在尝试遍历 google tutorial on building good ap architecture .我正在使用 Java 8 和 SDK 26。这是我到目前为止的代码: package
我试图通过将我的一些 ViewModel 实例移动到一个抽象基类中来减少 Dagger 的一些样板,但找不到一个很好的方法来做到这一点。我的 Intent 是从我的基本 fragment 中实例化我的
ActivityViewModels 和惰性 ViewModelProvider 的区别? 我见过两种初始化 View 模型的方法: private val someViewModel: SomeVi
为什么我应该为 View 模型使用 viewmodelproviders? 为什么我不能将自定义单例注释添加到我的 View 模型中,然后将此 View 模型注入(inject) fragment 类
这就是我正在努力做的事情。 在 Fragment 内设置对象的 ArrayList 从 FragmentActivity 中的观察者获取该数组容器(承载所有 fragment 的 Activity)
我相信我正在遵循为我提供的用于建立 ViewModelProvider.Factory 的代码示例。它发生在 OnAttach 方法的 CheckInRecentList 代码中的这条语句上。我们将不
关于过去的问题How to get a ViewModel? ,以及我发现的例子,它并不能解决我的问题。我没有在那里发表评论的权限,所以我不得不再次询问。我没有 ViewModelProviders
我是 Kotlin 的新手,请帮助我如何在 Kotlin 中使用 ViewModelProviders.of(this) 我的java代码是 mFavViewModel = ViewModelPro
嘿,我正在尝试让我的 ViewModel 工作,但到目前为止还没有运气。Android Studio 显示错误 Cannot resolve symbol 'ViewModelProviders'。
我很高兴使用新的 Android 架构组件 ViewModel 系统,它很好地将 Activity/Fragment/Layout 渲染问题与 ViewModel 逻辑分开。我已经成功地对 ViewM
我是一名优秀的程序员,十分优秀!