检测Android中特定变量中的值何时更改

时间:2019-01-14 17:15:18

标签: java android

我有一个名为int的{​​{1}}变量。我想在值改变时做些什么。

例如:

mCurrentIndex

3 个答案:

答案 0 :(得分:0)

如果mCurrentIndex的作用域仅在MainActivity中,那么我认为最好是为mCurrentIndex创建getter和setter方法,并在setter方法的末尾调用onCurrentIndexValueChange()

public int getIndex(){
  return this.mCurrentIndex;
}

public void setIndex(int value){
  this.mCurrentIndex = value;
  this.onCurrentIndexValueChange();
}

答案 1 :(得分:0)

您可以使用设置器功能

 private int mCurrentIndex = 1;
 public void setCurrentIndex(int newValueFormCurrentIndex)
 {
   if(newValueFormCurrentIndex != mCurrentIndex)
    {
     onCurrentIndexValueChange();
     mCurrentIndex = newValueFormCurrentIndex;
    }
 }

答案 2 :(得分:0)

解决此问题的一种方法是使用Android's LiveData

根据您的情况,由于您想观察int,因此可以执行以下操作:

public MutableLiveData<Integer> mCurrentIndex = new MutableLiveData<>();

要更改您的价值,请执行以下操作:

mCurrentIndex.setValue(12345); // Replace 12345 with your int value.

要观察更改,您将do the following

mCurrentIndex.observe(this, new Observer<Integer>() {
        @Override
        public void onChanged(@Nullable final Integer newIntValue) {
            // Update the UI, in this case, a TextView.
            mNameTextView.setText("My new current index is: " + newIntValue);
        }
    };);
}

这种方法很有用,因为您可以定义一个ViewModel来将逻辑与Activity隔离开,同时让UI观察并反映发生的更改。

通过将逻辑与ViewModel分开,您的逻辑变得更易于测试,因为为ViewModel编写测试比为Activity编写测试相对容易。

有关LiveData的更多信息,请查看此link