gpt4 book ai didi

java - ViewModelProviders#of(Fragment) 类型错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:37 26 4
gpt4 key购买 nike

我正在尝试遍历 google tutorial on building good ap architecture .我正在使用 Java 8 和 SDK 26。这是我到目前为止的代码:

package test.me;

import android.app.Fragment;
import android.arch.lifecycle.ViewModel;
import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle;
import android.support.annotation.Nullable;

public class ChronoFragment extends Fragment {

private ViewModel my_model;

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
my_model = ViewModelProviders.of(this).get(ViewModel.class); // <-- error on this
// and so on
}
}

麻烦的是,到目前为止,SDK 返回以下错误:

Cannot resolve the method 'of(test.me.ChronoFragment)'.

我不明白,因为

  • ChronoFragment 是 Fragment 类型
  • 方法 ViewModelProviders#of(Fragment) does exist并且可以通过 SDK 访问。

知道我做错了什么吗?

最佳答案

Architecture Components 使用支持库中的 appcompat Fragment 而不是原生的。尝试将 Fragment 的导入更改为

import android.support.v4.app.Fragment;

由于历史原因,有两个不同的 Fragment 类。它们具有相同的功能,但存在于两个不同的包中。有关详细信息,请参阅 Why are there two Fragment classes in Android?

截至 2019 年 2 月 6 日:

现在有第三个 Fragment 类。如果您使用的是新的 AndroidX 库,则执行

import androidx.fragment.app.Fragment;

请确保您使用与其余依赖项一致的正确 Fragment 类。

关于java - ViewModelProviders#of(Fragment) 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48291104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com