Я реализую привязку данных с помощью архитектуры Live Data.Я сделал все вещи, но я не могу найти, где я должен обновить значение ответа во фрагменте.Я нажал кнопку и, нажав кнопку, смог отправить данные на сервер и получить ответ.Но Моя проблема в том, как значение msg или значение Success обновляются во фрагменте.Мой наблюдатель не вызывается, когда значение обновляется.Есть ли что-то, что я делаю неправильную реализацию.Заранее спасибо.
Мой фрагмент
**Oncreate Method**
{ signUpViewModel=ViewModelProviders.of(getActivity()).get(SignUpViewModel.class);
observeViewModel(signUpViewModel);
return view;
}
//my observe class
private void observeViewModel(SignUpViewModel signinViewModel) {
if (signinViewModel.getmessage() != null) {
signinViewModel.getmessage().observe(this, new Observer<String>() {
@Override
public void onChanged(@Nullable String msg) {
if (msg != null) {
Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
}
}
});
}
}
//button clicked
public void onSignUpClicked(View view)
{
signUpViewModel.registerUser(userFName, userLName, userEmail,userPassword);
}
SignUpViewModel.class
public class SignUpViewModel extends ViewModel{
private LoginFragmentRepository loginFragmentRepository;
private LiveData<String> sucessMsg;
String signUpMsg;
public void registerUser(String userFName, String userLName, String userEmail, String userPassword) {
loginFragmentRepository=new LoginFragmentRepository();
sucessMsg= loginFragmentRepository.registerUser( userFName, userLName, userEmail, userPassword);
}
/**
* get signup msg
* @return
*/
public LiveData<String> getmessage() {
return sucessMsg;
}
LoginFragmentRepository
{
private ApiInterface apiInterface;
private UserDao userDao;
public LiveData<String> registerUser(String userFName, String userLName, String userEmail, String userPassword) {
apiInterface = RestApi.getRetroInstance().create(ApiInterface.class);
final MutableLiveData<String> msg = new MutableLiveData<>();
Call<SignUpModel> req = apiInterface.registerUser(userFName,userLName,userEmail,userPassword);
req.enqueue(new Callback<SignUpModel>() {
@Override
public void onResponse(Call<SignUpModel> call, Response<SignUpModel> response) {
if (response.isSuccessful()) {
//update this value in fragment
msg.postValue(response.body().getData());
//getReceipesListDataResponseMutableLiveData.setValue(NetworkResponse.success(receipes));
} else {
msg.postValue("Please check your network connection");
}
}
@Override
public void onFailure(Call<SignUpModel> call, Throwable t) {
msg.postValue("Please check your network connection");
}
});
return msg;
}
}