【发布时间】:2017-10-10 12:19:13
【问题描述】:
我目前正在为我的 android 应用程序项目使用 databinding。我想从R.string.txtOldPassWordError 在我的CustomTextView 上设置error 消息,并从另一个名为ViewModelClass 的类中设置它。
这是我的 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 测试版。任何帮助将不胜感激。
【问题讨论】:
-
getResources().getString(R.string.select);或参考此stackoverflow.com/questions/7493287/…
-
我试过这个@SagarAghara,但说“无法解析方法'getResources'”,谢谢你的努力
-
那是因为 getResources 需要上下文。您是否有机会使用 MVVM 架构。您不能通过构造函数从活动或片段中传递字符串吗?
标签: android data-binding textview