То, что вы ищете, может быть достигнуто с помощью LiveData
из компонента архитектуры, это также может быть сделано с помощью любых других наблюдаемых инструментов, таких как rxJava.
Первый шаг - определить наблюдаемое внаш ViewModel
, и реализуя функцию, которая, когда пользователь щелкает, он вызывает наблюдаемое.
ViewModel:
MutableLiveData<Boolean> timePickerDialogData = new MutableLiveData<>();
...
public void onDisplayTimePickerDialogClick() {
timePickerDialogData.setValue(true);
}
...
public LiveData<Boolean> getTimePickerDialogData() {
return timePickerDialogData;
}
Второй шаг заключается в наблюдении занаблюдаем во фрагменте и слушаем его значение изменения.когда наблюдаемое вызывается из ViewModel
, мы можем отобразить диалоговое окно.
Фрагмент:
private void observeTimePickerDialogData() {
viewModel.getTimePickerDialogData().observe(this, display -> {
if(display) setTimePickerDialog(); // Display TimePickerDialog
});
}
Наконец, логика onClick
внутри XML
файл макета с использованием привязки данных Android.
XML:
android:onClick="@{()->viewModel.onDisplayTimePickerDialogClick()}"