我已经在活动中成功使用了Saripaar,但是现在,当我将其与DialogFragment
一起使用时,即使输入错误也始终转到onSuccess
。
我的Fragment
正在实施ValidationListener
,而Validator
也会在onCreate()
Fragment
中初始化。
有没有人知道它在片段中的行为.. ???
这是我的代码视图...
public class MyDialogFragment extends DialogFragment implements ValidationListener {
// Declaring validator
private Validator validator;
// views to validate
@Required(order = 1)
@TextRule(order = 5, minLength = 6, message = "Enter at least 6 characters.")
private EditText nameEditText;
@Required(order = 2)
private EditText addressEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initializing validation process
validator = new Validator(getActivity()); /*====*/
validator.setValidationListener(this);
}
positiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Validating on positive button event
validator.validate();
}
});
}
// Here are the validation listener methods to implemented
// Just copy pasted from you github account tutorial page
}
每件事情似乎都是正确的... onSuccess事件每次都在完美地调用......不知道实际上是什么问题,或者我做错了什么......
我怀疑有一件事是,在行getActivity()
中调用validator = new Validator(getActivity());
可能会导致问题,就像您的实现取决于活动的上下文一样,而在对话框片段中,我们已经脱离了某些内容。 ..你可以猜得更好...... :)。
答案 0 :(得分:3)
试试这个,
validator = new Validator(this); /*====*/
而不是
validator = new Validator(getActivity()); /*====*/
另外,请使用最新的来源。罐子有点过时了。如果这有帮助,请告诉我。
答案 1 :(得分:-1)
添加一个额外的“if”来询问“控制器”是否属于“支持”片段类型,在没有使用“本机片段”的情况下,执行此操作也可以在此类中进行验证片段
这里是我的Validator.java
public Validator(final Object controller) {
assertNotNull(controller, "controller");
...
else if(controller instanceof android.support.v4.app.Fragment){
Activity activity = (Activity) ((android.support.v4.app.Fragment) controller).getContext();
mValidationContext = new ValidationContext(activity);
}
}
<强>更新强>
现在不需要更改来支持android.support.v4.app.Fragment,我的拉动变更请求被接受了:)
https://github.com/ragunathjawahar/android-saripaar/pull/205/commits/673b7ea7174848b96bce1ae82fa2118d1af9f128