Android Saripaar片段问题(DialogFragment)

时间:2013-07-11 08:39:32

标签: android validation saripaar

我已经在活动中成功使用了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());可能会导致问题,就像您的实现取决于活动的上下文一样,而在对话框片段中,我们已经脱离了某些内容。 ..你可以猜得更好...... :)。

2 个答案:

答案 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,我的拉动变更请求被接受了:)

enter image description here https://github.com/ragunathjawahar/android-saripaar/pull/205/commits/673b7ea7174848b96bce1ae82fa2118d1af9f128