【问题标题】:I am not able to access data stored in ViewModel class我无法访问存储在 ViewModel 类中的数据
【发布时间】:2020-10-02 20:01:48
【问题描述】:

我正在学习在 android 中使用 View Model,但我无法访问存储在 View Model 类中的变量。为简单起见,我创建了一个新项目来尝试实现一个简单的计数器应用程序,但在这里我也面临同样的问题。

我无法从我的 UI 控制器访问 View Model 类中的数据。 有人可以帮忙吗?

我的视图模型

package com.example.smish_hash20;
import androidx.lifecycle.ViewModel;

public class myViewModel extends ViewModel {
    int num = 0;
    void addNum(){
        num++;
    }
}

主要活动

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() 无法识别的错误。

【问题讨论】:

  • 尝试在 int 和 void 之前添加 'public' 以使其可访问。

标签: android android-studio model-view-controller viewmodel


【解决方案1】:

您已将视图模型声明为基本类型ViewModel,这意味着您将只能在初始化对象后作为基本类型与对象进行交互(从技术上讲,您可以强制转换,但不要走那条路)。

你应该替换这一行:

ViewModel viewModel;

使用您的子类型:

myViewModel viewModel;

不需要将方法 addNum() 设为 public - 默认访问器很好,因为两个类都在同一个包中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    相关资源
    最近更新 更多