说明:
我有一个片段活动FirstRun其中包括 5碎片 with 滑动导航,第二个和第三个片段包含 2编辑文本需要用户填写,并且不需要为空或未填写。
好的,我可以使用 OnTextChanged 侦听器验证字段,但用户有可能只是滑到下一个片段。
问题 :
我的问题是,在用户在 EditText 中输入某个值之前,如何防止滑动到下一个片段?在验证用户输入之前如何防止片段创建?
例子 :除非填充了第二个片段的 EditText,否则防止滑动到第三个片段。
好吧,在模糊地徘徊了大约一周之后,我找到了一个解决方案来验证输入,同时也防止滑动。
Step 1:首先是实现一个自定义视图分页器类
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:所以现在我可以通过设置 is pagingenabled false 来防止滑动,同时任何触摸事件都由 Toast 响应,提示用户填写所有字段。
Step 3:片段可见后
@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.
}
}
这就是我现在实施验证的方式。如果我改进我的代码,我会更新它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)