Android Saripaar проблема с фрагментами (DialogFragment)

Я успешно использовал 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 ответа

Попробуй это,

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

вместо

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

Также, пожалуйста, используйте последний источник. Баночка немного устарела. Позвольте мне знать, если это помогает.

Добавьте дополнительное "если", чтобы спросить, был ли "контроллер" фрагмента типа "поддержка", в тех случаях, когда "собственный фрагмент" не используется, выполняя это, можно выполнять проверки и в этом фрагменте класса.

вот мой 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/

Другие вопросы по тегам