0

我已经在活动中成功使用了 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()in linevalidator = new Validator(getActivity());可能会导致问题,例如您的实现取决于活动的上下文,并且在对话片段中,我们脱离了上下文……嗯,您可以更好地猜测它……: )

4

2 回答 2

3

尝试这个,

validator = new Validator(this); /*====*/

代替

validator = new Validator(getActivity()); /*====*/

另外,请使用最新的来源。罐子有点过时了。让我知道这是否有帮助。

于 2013-07-12T15:20:14.523 回答
-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

于 2017-09-24T20:59:18.280 回答