4
我目前正在爲我的android應用程序項目使用databinding
。我想在我的CustomTextView
上設置error
消息從R.string.txtOldPassWordError
,並將其設置爲另一個名爲ViewModelClass
的類。如何在ViewModel中獲取R.string Android中的DataBinding類
這裏是我的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}" />
這是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);
}
}
}
這是strings.xml
<string name="select">Please Enter Old Password</string>
串
所以,我想訪問我的viewModel類中的這個字符串,並將其設置爲錯誤消息而不是hardcoded it directly as string
。
那麼我該如何做到這一點?我正在使用Android Studio 3.0 Beta版本。任何幫助將非常感激。
getResources()的getString(R.string.select)訪問它。 或引用此https://stackoverflow.com/questions/7493287/android-how-do-i-get-string-from-resources-using-its-name –
我試過這@SagarAghara,但是說「無法解析方法'getResources'「,thx努力 –
這是因爲getResources需要上下文。你有沒有機會使用MVVM架構?你不能通過構造函數從活動或片段傳遞字符串嗎? – Raghunandan