我无法访问存储在 ViewModel class 中的数据
I am not able to access data stored in ViewModel class
我正在学习在 android 中使用视图模型,但我无法访问存储在我的视图模型 class 中的变量。为了简单起见,我创建了一个新项目来尝试实现一个简单的计数器应用程序,但在这里我也面临着同样的问题。
我无法从我的 UI 控制器访问视图模型 class 中的数据。
有人可以帮忙吗?
我的视图模型
package com.example.smish_hash20;
import androidx.lifecycle.ViewModel;
public class myViewModel extends ViewModel {
int num = 0;
void addNum(){
num++;
}
}
主要Activity
package com.example.smish_hash20;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int num = 0;
ViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
final TextView textView = findViewById(R.id.textView);
viewModel = new ViewModelProvider(this).get(myViewModel.class);
textView.setText(String.valueOf(viewModel.num));
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewModel.addNum();
textView.setText(String.valueOf(viewModel.num));
}
});
}
}
此处Android Studio 显示无法识别 num 和 addNum() 的错误。
您已将您的视图模型声明为基本类型 ViewModel
这意味着您将只能在初始化后与作为基本类型的对象进行交互(从技术上讲,您可以强制转换,但不要继续下去路线)。
您应该替换此行:
ViewModel viewModel;
你的子类型:
myViewModel viewModel;
不需要制作方法 addNum()
public - 默认访问器很好,因为两个 类 在同一个包中。
我正在学习在 android 中使用视图模型,但我无法访问存储在我的视图模型 class 中的变量。为了简单起见,我创建了一个新项目来尝试实现一个简单的计数器应用程序,但在这里我也面临着同样的问题。
我无法从我的 UI 控制器访问视图模型 class 中的数据。 有人可以帮忙吗?
我的视图模型
package com.example.smish_hash20;
import androidx.lifecycle.ViewModel;
public class myViewModel extends ViewModel {
int num = 0;
void addNum(){
num++;
}
}
主要Activity
package com.example.smish_hash20;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int num = 0;
ViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
final TextView textView = findViewById(R.id.textView);
viewModel = new ViewModelProvider(this).get(myViewModel.class);
textView.setText(String.valueOf(viewModel.num));
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewModel.addNum();
textView.setText(String.valueOf(viewModel.num));
}
});
}
}
此处Android Studio 显示无法识别 num 和 addNum() 的错误。
您已将您的视图模型声明为基本类型 ViewModel
这意味着您将只能在初始化后与作为基本类型的对象进行交互(从技术上讲,您可以强制转换,但不要继续下去路线)。
您应该替换此行:
ViewModel viewModel;
你的子类型:
myViewModel viewModel;
不需要制作方法 addNum()
public - 默认访问器很好,因为两个 类 在同一个包中。