У меня это нормально работает в моей основной деятельности, но по какой-то причине с моим фрагментом он не хочет обновлять поле editText после его изменения. Внутри моего файла frag_controls. xml у меня есть фрагмент editText внутри моего фрагмента, например:
<EditText
android:id="@+id/alarmTemp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="4dp"
android:ems="10"
android:textColor="@color/background"
android:background="@color/colorWhite"
android:imeOptions="actionDone"
android:inputType="numberDecimal"
android:text="@{userModel.alarmTemp}"
/>
раздел данных над ним:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="userModel"
type="com.mycompany.myapp.UIViewModel"/>
</data>
Затем в java коде моего фрагмента :
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
// Defines the xml file for the fragment
View view = inflater.inflate(R.layout.fragment_controls, parent, false);
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_controls, parent, false);
userModel = ViewModelProviders.of(this).get(UIViewModel.class);
binding.setLifecycleOwner(this);
binding.setUserModel(userModel);
View rootView = binding.getRoot();
return rootView;
В моей модели данных я установил alarmTemp следующим образом: alarmTemp.setValue(s)
;
И это работает, когда вы запускаете его, любое значение, которое я даю s, появится в моем EditText , Но если я установлю его позже во время работы, он не изменится. Это работает для полей, которые находятся в моей основной деятельности, хотя. Поэтому я не понимаю, почему это не работает в моем фрагменте.
О, и температура тревоги определена так же, как в viewModel:
public MutableLiveData<String> alarmTemp = new MutableLiveData<>();