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/