Robobinding框架(Android)中的验证
我是Android开发的新手。我曾经开发过Android应用程序,但我没有找到任何解决方案来在演示模型(而不是活动)中创建验证。有没有人遇到过类似的问题?选择哪种方法? 我需要这样的东西:Robobinding框架(Android)中的验证,android,validation,robobinding,Android,Validation,Robobinding,我是Android开发的新手。我曾经开发过Android应用程序,但我没有找到任何解决方案来在演示模型(而不是活动)中创建验证。有没有人遇到过类似的问题?选择哪种方法? 我需要这样的东西: public class LoginPM extends AbstractPresentationModel { private String login; public String getLogin() { return login; } public vo
public class LoginPM extends AbstractPresentationModel {
private String login;
public String getLogin() { return login; }
public void setLogin(String value)
{
if (!StringComparator.IsEquals(this.login, value))
{
if(TextUtils.isEmpty(value))
{
setError("login", "Field cannot be left blank.");
return;
}
this.login = value;
firePropertyChange("login");
}
}
}
public class LoginPM extends BasePresentationModel {
private String login;
public String getLogin() { return login; }
public void setLogin(String value)
{
if (!StringComparator.IsEquals(this.login, value))
{
if(TextUtils.isEmpty(value))
{
setError("login", "Field cannot be left blank.");
return;
}
this.login = value;
firePropertyChange("login");
}
}
}
我已经解决了使用反射从绑定对象映射(Robobindings)获取用户控件的任务。 这样使用:
public class LoginPM extends AbstractPresentationModel {
private String login;
public String getLogin() { return login; }
public void setLogin(String value)
{
if (!StringComparator.IsEquals(this.login, value))
{
if(TextUtils.isEmpty(value))
{
setError("login", "Field cannot be left blank.");
return;
}
this.login = value;
firePropertyChange("login");
}
}
}
public class LoginPM extends BasePresentationModel {
private String login;
public String getLogin() { return login; }
public void setLogin(String value)
{
if (!StringComparator.IsEquals(this.login, value))
{
if(TextUtils.isEmpty(value))
{
setError("login", "Field cannot be left blank.");
return;
}
this.login = value;
firePropertyChange("login");
}
}
}
很抱歉迟了答复。我没有注意到这个问题。您的LoginActivity和LoginPM之间是否有LoginView接口?通过这种方式,您可以执行以下操作:
public void login() {
if(isInvalid(loginInfo)) {
loginView.setLoginError("error info");
} else {
loginService.login(loginInfo);
}
}
或者,您可以为TextView实现OnTextChange事件,这相当容易做到。您可以参考TextView的文本属性绑定实现。您可以注册一个方法来侦听事件。触发事件后,可以从事件对象获取TextView
此外,还可以为TextView实现错误绑定属性,并相应地更新错误信息
如果你愿意,你可以发布到robobindinggoogle组中,以获得快速响应
希望这有帮助,
Cheng此外,您还可以为TextView实现错误绑定属性,并相应地更新错误信息。这真的有可能吗?我认为TextView和EditText没有可访问的错误属性。只有方法setError(“MSG”)是可能的。@Holla,这当然是可能的。您只需为TextView.error实现一个绑定属性,就像任何其他绑定属性一样。如果您感兴趣,请查看文档和源代码。这很容易做到。好的,我会尝试一下,我认为它不可访问,因为它不在XML属性列表中:不,它不需要在Android XML属性列表中。对我不起作用:
org.robobinding.binder.ViewHierarchyInflationErrorsException:------------------------------------EditText(1个错误)-----------------------错误:无法识别的属性“error”-------------第一个错误堆栈跟踪-----------------错误:org.robobinding.PendingAttributesForViewImpl.getResolutionErrors上无法识别的属性“error”(PendingAttributesForViewImpl.java:43)位于org.robobinding.binder.BindingAttributeResolver.resolve(BindingAttributeResolver.java:38)