She*_*ler 99 android viewmodel android-architecture-components
嘿我想让我的ViewModel工作,但到目前为止没有运气.Android Studio显示错误Cannot resolve symbol 'ViewModelProviders'.
我在这个题目中找到的每个其他问题被修正extends Activity到extends AppCompatActivity,但我延长正确的.不确定我错过了什么...
我的代码基于此YouTube视频
MainActivity.java
public class MainActivity extends AppCompatActivity implements
TileAdapter.TileAdapterOnClickHandler {
private BaseViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set Toolbar
Toolbar myToolbar = findViewById(R.id.toolbar);
setSupportActionBar(myToolbar);
//initialize viewModel
viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);
Run Code Online (Sandbox Code Playgroud)
BaseViewModel.java
public class BaseViewModel extends ViewModel {
private Movie[] mMovie;
public void init (Movie[] movies){
this.mMovie = movies;
}
public Movie[] getMovie() {
return mMovie;
}
Run Code Online (Sandbox Code Playgroud)
She*_*ler 177
我的构建中没有两个依赖项,因此问题.
implementation "android.arch.lifecycle:extensions:1.1.0"
implementation "android.arch.lifecycle:viewmodel:1.1.0"
Run Code Online (Sandbox Code Playgroud)
谢谢@Muthukrishnan Rajendran
Bab*_*bao 67
如果你正在使用,androidx你需要这个:
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
Run Code Online (Sandbox Code Playgroud)
Sum*_*kla 24
android.arch.lifecycle:extensions 已弃用
def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
Run Code Online (Sandbox Code Playgroud)
像这样创建视图模型的实例:
爪哇
Yourclass obj = new ViewModelProvider(context).get(ClassViewModel.class);
Run Code Online (Sandbox Code Playgroud)
科特林
var obj = ViewModelProvider(context).get(ClassViewModel::class.java)
Run Code Online (Sandbox Code Playgroud)
San*_*eev 14
如果您使用的是已编译的sdk 28或更高版本,则只需添加单个依赖项即可获取ViewModel和LiveData
dependencies {
//...
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下(Android Studio 3.6.3 ~ 4.1.2),AppCompatActivity成功做到:
MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)
它需要这两个:
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
Run Code Online (Sandbox Code Playgroud)
(单独使用lifecycle-extentions是不够的)
似乎您不再需要包含'androidx.lifecycle:lifecycle-extensions:2.2.0'要实例化的 gradle 实现行 ( ) ViewModelProvider。
您应该在项目的build.gradle中添加库
def lifecycle_version =“ 2.0.0”
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
Run Code Online (Sandbox Code Playgroud)
我从Android 官方文档中解决了这个问题。在下面添加到build.grale
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40925 次 |
| 最近记录: |