我有扩展了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。这里的实现有问题吗?
答案 0 :(得分:0)
我找到了问题的答案。
我没有使用getter和setter方法,而是将tripCount变量设置为“ protected”,以便可以从子类访问它。