Wie man R. string in der ViewModel-Klasse von DataBinding in Android
Ich bin derzeit mit databinding
für mein android-Anwendung-Projekt. Ich möchte, um die error
Nachricht auf meinem CustomTextView
aus R.string.txtOldPassWordError
zu stellen und von einer anderen Klasse aufgerufen ViewModelClass
.
Hier ist mein XML code
<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}" />
und das ist 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);
}
}
}
und dieser string ist aus strings.xml
<string name="select">Please Enter Old Password</string>
So, ich will Zugriff auf diese Zeichenfolge in meinem viewModel-Klasse, und legen Sie es als Fehlermeldung, statt hardcoded it directly as string
.
Also, wie kann ich das erreichen? Ich bin mit Android Studio 3.0 Beta Version. Jede Hilfe wäre wirklich zu schätzen.
- getResources().getString(R. string.wählen Sie); oder wenden Sie sich mit diesem stackoverflow.com/questions/7493287/...
- ich habe versucht, diese @SagarAghara, aber Sie sagt, Sie "können nicht beheben "Methode getResources' ", thx für die Bemühungen
- das ist, weil getResources braucht Kontext. Sind Sie mit MVVM-Architektur durch Zufall. Konnte Sie nicht übergeben Sie die Zeichenfolge aus einer Aktivität oder fragment über Konstruktor?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen
ResourceProvider
Klassenun gehen Sie zu Ihrem
ApplicationClass
und fügen Sienun gehen Sie zu Ihrem
ChangePasswordViewModel
und erstellen Sie ein Objekt der ResourceProviderübergeben und in
constroctor
vonChangePasswordViewModel
als Sie können darauf zugreifen, indem
Mit einem ObservableInt für mich gearbeitet. Das hinzufügen dieser auf das ViewModel
Und einfach einen neuen String-Wert
In der xml fügen Sie den folgenden, um die TextView
ObservableInt
Typ scheint nicht zu funktionieren, mit"tools:error"
aufTextInputLayout
. Das einzige, was funktioniert istBindableString
. Wie kann ich bindenObservableInt
mitBindableString
?Können Sie senden von Rahmen in das layout wie dieses :
XML :
MyBaseObservableClass.kt :