gpt4 book ai didi

android - 如何获取Android中DataBinding的ViewModel类中的R.string

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:18 28 4
gpt4 key购买 nike

我目前正在为我的 android 应用程序项目使用 databinding。我想在我的 CustomTextView 上设置来自 R.string.txtOldPassWordErrorerror 消息,并从另一个名为 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 类中访问这个字符串并将其设置为错误消息,而不是直接将其硬编码为字符串

那么我该如何实现呢?我正在使用 Android Studio 3.0 Beta 版本。非常感谢任何帮助。

最佳答案

使用 ObservableInt 对我有用。将此添加到 ViewModel

private final ObservableInt mErrorText = new ObservableInt(R.string.empty_text);

public ObservableInt getErrorText() {
return mErrorText;
}

只需设置一个新的字符串值

mErrorText.set(R.string.text_not_valid);

在 xml 中将以下内容添加到 TextView

android:text="@{viewModel.errorText}"

关于android - 如何获取Android中DataBinding的ViewModel类中的R.string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46666607/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com