RxJava2 наблюдаемый не обрабатывается вNext при изменении

Я новичок в RxJava. Я хочу отслеживать изменения переменной Int и реагировать на нее, когда она изменяется.

Вот мой пример:

 class MainActivity : AppCompatActivity() { lateinit var button: Button var counter: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val observable :Observable<Int> = Observable.just(counter) button = findViewById(R.id.button) button.setOnClickListener(View.OnClickListener { counter++ }) observable.subscribe( Consumer { t -> Log.d("fromObservable", counter.toString()) } ) } } } 

Тем не менее, журнал никогда не вызывает, когда я нажимаю кнопку. Как я могу сделать это правильно с помощью RxJava2?

Вы создали простой наблюдаемый только излучающий один элемент, но вы можете использовать объект Subject для вашего прецедента:

 class MainActivity : AppCompatActivity() { lateinit var button: Button var counter: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val subject: BehaviorSubject<Int> = BehaviorSubject.createDefault(counter) val observable: Observable<Int> = subject.hide() button = findViewById(R.id.button) button.setOnClickListener(View.OnClickListener { subject.onNext(++counter) }) observable.subscribe( Consumer { t -> Log.d("fromObservable", counter.toString()) } ) } } } 

Вы не правильно создаете свое Observable .

Observable.just(counter) создаст Observable который испускает значение counter и завершает. Документация Observable.just ()

Вы можете делать то, что хотите, с Subject подобным BehaviorSubject . Документация субъекта

 class MainActivity : AppCompatActivity() { lateinit var button: Button var counter : Int = 0 set(value) { field = value observable.onNext(value) } val observable : BehaviorSubject<Int> = BehaviorSubject.createDefault(counter) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button = findViewById(R.id.button) button.setOnClickListener(View.OnClickListener { counter++ }) observable.subscribe( Consumer { t -> Log.d("fromObservable", counter.toString()) } ) } }