J'utilise actuellement databinding
pour mon projet d'application Android. Je souhaite définir le message error
sur mon CustomTextView
à partir de R.string.txtOldPassWordError
et le configurer à partir d'une autre classe appelée ViewModelClass
.Comment faire pour obtenir R.string dans ViewModel Classe de DataBinding dans Android
Voici mon code XML
<com.horseproject.widget.CustomEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="@dimen/dp_20"
android:drawablePadding="@dimen/dp_10"
android:hint="@string/enter_old_password"
android:inputType="textPassword"
android:lines="1"
android:text="@={ChangePasswordVM.userOldPassword}"
android:textColorHint="@color/gray_text"
app:drawableLeftCompat="@drawable/ic_password_lock"
app:drawableTintCompat="@color/gray_app"
app:error="@{ChangePasswordVM.userOldPasswordError}" />
et c'est ViewModelClass.java
public class ChangePasswordViewModel extends BaseObservable {
public ObservableField<String> userOldPassword = new ObservableField<>("");
public void userPasswordChange() {
if ((TextUtils.isEmpty(userOldPassword.get()))) {
userOldPasswordError.set("Please enter your old password");
return;
} else if (userOldPassword.get().length() <= 5) {
userOldPasswordError.set("Password should contain minimum 6 characters");
return;
} else {
userOldPasswordError.set(null);
}
}
}
et c'est une chaîne de strings.xml
<string name="select">Please Enter Old Password</string>
Donc, je veux accéder à cette chaîne dans ma classe viewModel et la définir comme message d'erreur au lieu de hardcoded it directly as string
.
Alors, comment puis-je y parvenir? J'utilise la version bêta d'Android Studio 3.0. Toute aide sera grandement appréciée.
getResources() getString (R.string.select). ou renvoyer ce https://stackoverflow.com/questions/7493287/android-how-do-i-get-string-from-resources-using-its-name –
J'ai essayé ce @SagarAghara, mais il est dit " ne peut pas résoudre la méthode 'getResources' ", merci pour les efforts –
car getResources a besoin de contexte. Utilisez-vous l'architecture MVVM par hasard? Ne pourriez-vous pas passer la chaîne d'une activité ou d'un fragment via un constructeur? – Raghunandan