如何验证的EditText的片段和prevent片段的变化? [英] How to validate EditText in Fragments and prevent Fragment change?
问题描述
Descrition:
我有一个片段活动 FirstRun 这是刷卡导航,第二和第三个片段组成5 片段包含2 EditTexts 这需要由用户填写,他们需要不为空,或填补。
好吧,我可以验证与OnTextChanged监听器领域,但有机会,用户可能只是轻扫到下一个片段。
问:
我的问题是,直到一定的价值是由用户在输入的EditText我怎么能prevent轻扫到下一个片段?只是如何prevent片段创建,直到用户输入的验证?
示例: prevent轻扫到第3段第2,除非片段的EditText上都充满
。好了,所以之后依稀徘徊了一个星期左右,我发现了一个变通的解决方案来验证输入,同时也preventing刷卡。
第1步:第一件事情就是实现一个自定义视图寻呼机类
进口android.content.Context;
进口android.support.v4.view.ViewPager;
进口android.util.AttributeSet;
进口android.view.MotionEvent;
进口android.widget.Toast;公共类FirstRunPager扩展ViewPager {私人布尔isPagingEnabled;
公共上下文的背景下;
公共FirstRunPager(上下文的背景下,ATTRS的AttributeSet){
超(背景下,ATTRS);
this.isPagingEnabled = TRUE;
this.context =背景;
}@覆盖
公共布尔onTouchEvent(MotionEvent事件){
如果(isPagingEnabled){
返回super.onTouchEvent(事件);
}
Toast.makeText(背景下,请填写详细信息,然后刷一下!
Toast.LENGTH_LONG).show();
返回false;
}
@覆盖
公共布尔onInterceptTouchEvent(MotionEvent事件){
如果(isPagingEnabled){
返回super.onInterceptTouchEvent(事件);
} 返回false;
}公共无效setPagingEnabled(布尔B){
isPagingEnabled = B;
}
}
第二步:所以,现在我可以prevent仅仅通过设置刷卡进行分页启用假的,同时任何触摸事件被敬酒,提示用户填写所有字段回应。 p>
第3步:后一个片段是可见的。
@覆盖
公共无效setUserVisibleHint(布尔isVisibleToUser){
如果(isVisibleToUser){
//设置isPagingEnabled假这里
//验证这里的EditText值使用文本守望者
//如果一切还好
//设置isPagingEnabled =真
//通过吐司告诉用户,他现在可以刷卡。
}
}
这就是我如何现在实施验证。如果我提高我的code,我将更新它。
Descrition :
I have an Fragment Activity FirstRun which consists of 5 fragments with swipe navigation, 2nd and 3rd fragments contain 2 EditTexts which are required to be filled by user, and they need not to be null, or unfilled.
Okay i can validate the fields with an OnTextChanged Listener, but there is chances that user may just swipe over to next fragment.
Question :
My question is how am I able to prevent swipe to next fragment until some value is entered in the EditText by the user ? Simply how to prevent the fragment create until the user input are validated ?
Example : prevent a swipe to 3rd fragment unless the EditText of 2nd fragment are filled.
Okay so after vaguely wandering for about a week, I found a workaround solution to validate the inputs, meanwhile also preventing swipes.
Step 1: First thing is to implement a Custom View Pager class as
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Toast;
public class FirstRunPager extends ViewPager {
private boolean isPagingEnabled;
public Context context;
public FirstRunPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.isPagingEnabled = true;
this.context = context;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (isPagingEnabled) {
return super.onTouchEvent(event);
}
Toast.makeText(context, "Please fill in the details, then swipe !",
Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (isPagingEnabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean b) {
isPagingEnabled = b;
}
}
Step 2: So now i can prevent swipes just by setting is paging enabled false, meanwhile any touch events are responded by a Toast, which prompts user to fill all fields.
Step 3: After a fragment is visible
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser) {
// set isPagingEnabled false here
// validate EditText values here using Text Watcher
// if all okay
// set isPagingEnabled = true
// tell the user through a Toast, that he can swipe now.
}
}
That's how I'm implementing validation right now. I will update it if I improve my code.
这篇关于如何验证的EditText的片段和prevent片段的变化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!