如何验证的EditText的片段和prevent片段的变化? [英] How to validate EditText in Fragments and prevent Fragment change?

查看:108
本文介绍了如何验证的EditText的片段和prevent片段的变化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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仅仅通过设置刷卡进行分页启用假的,同时任何触摸事件被敬酒,提示用户填写所有字段回应

第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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆