如何验证Fragments中的EditText并防止Fragment更改?

2024-01-11

说明:

我有一个片段活动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(使用前将#替换为@)

如何验证Fragments中的EditText并防止Fragment更改? 的相关文章

随机推荐

  • 不单击所有选项卡并且不循环一次问题

    I am trying to click the tabs on the webpage as seen below Unfortunately it only seems to click some of the tabs despite
  • 基于包含子查询的查询的 ms-access 交叉表查询

    我在基于包含子查询的查询的交叉表查询时遇到问题 查询本身工作正常 但是当我在交叉表查询中使用它时 我收到一条与无法识别的字段名称相关的错误消息 并指向子查询中使用的字段 奇怪的是 我可以毫无问题地在此查询上定义数据透视表或数据透视图 所以
  • Chrome 扩展 - 获取当前选项卡的全部文本内容

    我正在开发一个扩展 我需要获取当前选项卡上的整个文本内容 现在我有一个插件可以从当前选项卡中检索选定的文本 所以 本质上我正在寻找它的 ctrl A 版本 这就是我到目前为止根据 Derek 的提示所做的事情 这是在我的事件处理程序中 这只
  • 当 python2.7 运行良好时,python 3.3 出现缩进错误

    我在下面编写了这个脚本 它将数字转换为其拼写 no raw input Enter a number strcheck str no try val int no except ValueError print sayi degil rai
  • Visual Studio 2010 中的 global.asax.cs 在哪里

    我安装的模板中不再有全局应用程序类代码隐藏 我只有 Global asax 我发现与全局 asax cs 为什么我再也看不到它了 如何重新创建Global asax cs 这是因为您创建的是网站而不是 Web 应用程序 我建议您使用预编译的
  • Kotlin 脚本文件中仅部分语法突出显示

    我在 Android Studio 中打开了一个文件夹 其中包含一个 Kotlin 脚本文件 kts 我在项目结构中配置了 JDK 作为 SDK 但我没有添加 gradle 文件 并且作为 Kotlin 脚本运行该文件工作正常 然而 语法突
  • PHP:尝试让 fgets() 在 CRLF、CR 和 LF 上触发

    我正在使用 proc open 和 fgets stdout 读取 PHP 中的流 尝试获取传入的每一行 许多 Linux 程序 包管理器 wget rsync 仅使用 CR 回车 字符来表示定期 就地 更新的行 例如下载进度 我希望在这些
  • MVC ValidateAntiForgeryToken 多选项卡问题

    我们收到 未提供所需的防伪令牌或该令牌无效 的信息 错误 并且经过一些进一步的调查 我成功地以最简单的形式重新创建了问题 我要么做了完全错误的事情 要么这是防伪令牌系统的限制 不管怎样 我会很感激一些建议 空 MVC 2 项目 一个视图页面
  • 如何在 gemspec 中指定最低 Ruby 版本?

    我正在为新版本的 gem 编写 gemspec 现在需要 Ruby 1 9 以前版本的 gem 可以在 Ruby 1 8 上使用 但现在需要 1 9 有没有办法让这个版本的 gem 安装失败 并为尝试在 Ruby 1 8 上安装它的用户发出
  • /dev/mem 和 /dev/kmem 不存在?

    如果有人能解释一下为什么这两个文件不存在 我将不胜感激 如果没有这两个文件 Android内核的虚拟内存空间和物理空间会是什么样子 Edit I am having Android 2 3 7 Cyanogen mod the 2 file
  • 如何复制整个目录结构?

    我正在将 10 000 个文件从一个目录复制到另一个目录 两个目录结构都有相同的文件 但是 尺寸可能会有所不同 如何强制覆盖不同大小的文件而不复制相同大小的文件 到目前为止我有这个 source D Test1 destination D
  • 是否可以在 Hibernate / JPA 中动态定义列名?

    因此 我有一个现有的数据库模式 其中包含许多我想使用 JPA Hibernate 进行建模的表 每个 表具有同一组 30 个附加列 以允许运行时扩展字段数量 记录 CREATE TABLE XX ID VARCHAR2 100 BYTE N
  • 使用 ui-router 时控制器可以从父控制器继承范围吗

    我有以下内容 var admin name admin url admin views nav sub templateUrl Content app admin partials nav sub html controller funct
  • 如果一个表单字段有多个验证器,如何让play一一验证它们,而不是全部验证?

    我看到了一个登录表单 有一个name输入有许多验证器 object Users extends Controller val loginForm Form tuple name gt nonEmptyText 1 verifying Its
  • 是否可以查看对 Firebase 数据库所做的更改日志?

    我的一个 Firebase 对象被删除了 我试图弄清楚这种情况是什么时候发生的 Firebase 是否有日志显示更改发生的时间 有些人说这存在于 Analytics 中 但我无法找到它 提前致谢 火力战士在这里 没有可公开访问的日志来记录对
  • C ++ 提升绑定性能

    绑定函数 使用 Boost Bind 时是否会对性能产生任何影响 正面或负面 也许 也许不是 这取决于 的结果std bind 或者也boost bind 是所谓的 绑定表达式 它具有由实现确定的不可知类型 这种类型是一个Callable
  • 将一些 WooCommerce 产品数据传递到 Contact Form 7 查询表

    After 当 WooCommerce 中所选变体缺货时显示表单 https stackoverflow com questions 66405033 display a form when the selected variation i
  • 使用来自 URL 的 HTML 中的 .svg 文件?

    我正在尝试在我的 html 中使用来自外部源的 svg 假设我有这个 svg https upload wikimedia org wikipedia commons 0 09 America Online logo svg https u
  • 功能组件嵌套与 props

    我对 React 还很陌生 我有一个关于架构和设计模式的问题 我已经完成了我的第一个项目 交互式图灵机测序仪 http reactiveturing herokuapp com 如果有人感兴趣的话 我发现自己经常声明嵌套函数 例如 func
  • 如何验证Fragments中的EditText并防止Fragment更改?

    说明 我有一个片段活动FirstRun其中包括 5碎片 with 滑动导航 第二个和第三个片段包含 2编辑文本需要用户填写 并且不需要为空或未填写 好的 我可以使用 OnTextChanged 侦听器验证字段 但用户有可能只是滑到下一个片段