Android“ getter”返回错误值

时间:2018-10-27 17:40:01

标签: java android

我有扩展了A类的B类,并且我试图从A类访问一个变量,但它没有返回正确的值。

(1)A类顶部的变量声明:

private int tripCount;

(2)我在类A的onCreate中有一个ViewModel观察器,该观察器正在ROOM数据库中寻找更改并相应地设置tripCount变量:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // we are going to overwrite this
    // setContentView(R.layout.activity_base);

    baseViewModel = ViewModelProviders.of(this).get(TripViewModel.class);
    baseViewModel.getAllTrips().observe(this, new Observer<List<TripEntity>>() {
        @Override
        public void onChanged(@Nullable final List<TripEntity> trips) {
            tripCount = trips.size();
            Log.v("BaseActivity","tripCount: " + tripCount);
        }
    });
}

(3)类A的Getter方法:

public int getTripCount() {
    return this.tripCount;
}

(4)B类正在扩展A类,并尝试通过以下方式访问tripCount变量/值:

tripCount2 = super.getTripCount();
Log.v("TripActivity","tripCount: " + tripCount2);

日志显示,来自类B的tripCount2为0,来自类A的tripCount为>0。这里的实现有问题吗?

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案。

我没有使用getter和setter方法,而是将tripCount变量设置为“ protected”,以便可以从子类访问它。