首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EditText上的事件根本未触发

基础概念

EditText 是 Android 平台上的一个 UI 组件,用于接收用户输入的文本。它可以响应多种事件,如文本变化、焦点变化、提交等。

相关优势

  • 用户交互:允许用户输入和编辑文本,是用户与应用程序进行交互的重要组件。
  • 灵活性:可以通过设置不同的属性和监听器来实现丰富的功能。

类型

  • 文本变化事件:通过 TextWatcher 监听文本的变化。
  • 焦点变化事件:通过 OnFocusChangeListener 监听焦点的变化。
  • 提交事件:通过 OnEditorActionListener 监听软键盘的提交动作。

应用场景

  • 表单输入:用户需要在表单中输入数据。
  • 搜索框:用户可以输入搜索关键词进行搜索。
  • 实时验证:用户输入文本时实时进行验证。

问题分析

EditText 上的事件未触发可能有以下几种原因:

  1. 监听器未正确设置:确保已经正确设置了监听器。
  2. 布局问题EditText 可能被其他视图遮挡,导致无法触发事件。
  3. 焦点问题EditText 可能没有获取到焦点,导致事件无法触发。
  4. 代码逻辑问题:可能在某些条件下禁用了事件监听。

解决方法

以下是一个示例代码,展示如何正确设置 EditText 的事件监听器:

代码语言:txt
复制
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);

        // 设置文本变化监听器
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // 文本变化前的操作
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // 文本变化时的操作
                Toast.makeText(MainActivity.this, "Text changed: " + s, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void afterTextChanged(Editable s) {
                // 文本变化后的操作
            }
        });

        // 设置焦点变化监听器
        editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    Toast.makeText(MainActivity.this, "EditText has focus", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "EditText lost focus", Toast.LENGTH_SHORT).show();
                }
            }
        });

        // 设置软键盘提交监听器
        editText.setOnEditorActionListener((v, actionId, event) -> {
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                Toast.makeText(MainActivity.this, "Submit clicked", Toast.LENGTH_SHORT).show();
                return true;
            }
            return false;
        });
    }
}

参考链接

通过以上步骤,可以确保 EditText 上的事件能够正确触发。如果问题仍然存在,请检查布局文件和代码逻辑,确保没有其他因素干扰事件的触发。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

html复选框选中与选中触发事件方法

今天,当制作一个不需要from表单复选框来提交数据小函数时,需要在复选框被选中或选中情况下修改一些后台数据。我想到了用js代码来监控复选框状态,并将实时数据发送到后台。...关于js代码如何监控checkbox状态,可以参考下面的例子。 复选框选择和取消选择触发事件方法。 Jq代码_ _点击复选框触发事件我是复选框。 $('#isbox ')。...; } }); 本机JS代码_ _单击复选框触发事件。 例如:我是复选框。...功能检查(e) 如果(已检查){ console . log(“checked”); }否则{ Console.log('选中'); } } 例如:我是复选框。...JS检测复选框选中状态代码原理是一样,只是写法不同!

4.9K40
  • 使用eventBus事件重复触发事件问题解决

    在单页应用中,在 A 页面中触发事件,然后在 B 页面中对这个事件进行响应是一个很常见需求,那么当有这种需求时候要怎么实现呢。...使用 eventBus 事件总线,当触发事件时,发送一个通知出去,在需要响应地方接收这个通知,响应事件。...基本使用 在官方文档,对 eventbus 介绍很简单,基本就是一笔带过,这里就来说下基本使用方法。...事件重复触发问题 坑一 正当你开心准备玩耍时候却发现好像有哪里不对劲,怎么事件会重复触发了,而且每次切换过路由后,事件执行次数就会加一,这怎么行,假如用户非常频繁切换页面,那事件执行次数不是会越来越多...$route.path 根本就不是我们发送和响应事件时候路由了,而是将要跳转页面的路由。 这其实就是生命周期问题了,在 beforeDestroy 和 destroy 生命周期中,用 this.

    3.6K30

    MultiButton事件触发型按键驱动模块在高云FPGA移植

    前两篇文章介绍了letter-shell串口终端和cmd-parse串口命令解析器在高云FPGA GW1NSR-4C SoC移植: letter-shell串口终端在高云FPGA移植 cmd-parser...串口命令解析器在高云FPGA移植 本文介绍一个非常简单、功能强大按键驱动模块MultiButton在高云FPGA移植。...MultiButton简介 MultiButton, 一个小巧简单易用事件驱动型按键驱动模块,可无限量扩展按键,按键事件回调异步处理方式可以简化你程序结构,去除冗余按键处理硬编码,让你按键业务逻辑更清晰...,单击按键事件 DOUBLE_CLICK,双击按键事件 LONG_PRESS_START,达到长按时间阈值时触发一次 LONG_PRESS_HOLD,长按期间一直触发 2....LONG_PRESS_HOLD : printf("LONG_PRESS_HOLD \r\n"); break; default: break; } } 初始化按键,并把按键触发事件和回调函数进行绑定

    66530

    WPF 多个 StylusPlugIn 事件触发顺序

    ,而蓝色代表附加StylusPlugIn元素 对同容器内两个重叠元素,将会同时触发两个元素 StylusPlugIn 事件,不同是在最底层元素将会在触摸线程触发,而在最上层元素将会是主线程触发...对同容器内多个重叠元素,将知道最上层和最底层元素会触发事件,不同是在最底层元素将会在触摸线程触发,而在最上层元素将会是主线程触发 如果是一个附加 StylusPlugIn 容器,包含一个附加...StylusPlugIn 元素,那么只有元素会触发在触摸线程触发事件 代码放在 github 建议下载代码测试 点击查看同容器内两个重叠元素例子 点击查看同容器内多个重叠元素例子 点击查看容器和包含一个元素例子...Down 都被调用,但是不同是 Stylus 2 是在主线程调用 同容器内多个重叠元素 在上面告诉大家同容器内两个重叠元素将会都触发事件 但是千万不要认为多个重叠元素都会被触发,其实只有最先加入视觉树元素和命中到元素会触发...所以第一个控件没有被触发事件

    76720

    WPF 多个 StylusPlugIn 事件触发顺序

    对同容器内两个重叠元素,将会同时触发两个元素 StylusPlugIn 事件,不同是在最底层元素将会在触摸线程触发,而在最上层元素将会是主线程触发 ?...对同容器内多个重叠元素,将知道最上层和最底层元素会触发事件,不同是在最底层元素将会在触摸线程触发,而在最上层元素将会是主线程触发 ?...如果是一个附加 StylusPlugIn 容器,包含一个附加 StylusPlugIn 元素,那么只有元素会触发在触摸线程触发事件 ?...Down 都被调用,但是不同是 Stylus 2 是在主线程调用 同容器内多个重叠元素 在上面告诉大家同容器内两个重叠元素将会都触发事件 但是千万不要认为多个重叠元素都会被触发,其实只有最先加入视觉树元素和命中到元素会触发...所以第一个控件没有被触发事件----

    87130

    【Node.JS】事件绑定与触发

    {a}同志`); }) //触发事件冰川入参数 event.emit('namea', '小解');  once() once 只会绑定一次性触发事件触发一次后就会解除绑定。...{a}同志`); }) //触发事件冰川入参数 event.emit('namea', '小解'); event.emit('namea', '小解');  我们触发两次,但只会显示一次结果。...('namea', function () { console.log("坚毅小解同志"); }) //触发事件 event.emit('namea'); 通过emit来进行触发事件。  ...{a}同志`); }) //触发事件冰川入参数 event.emit('namea', '小解');  删除事件 removeListener()  删除指定事件指定监听器 const eve =...('namea', name2) //触发事件冰川入参数 event.removeListener('namea', name) event.emit('namea', '小解'); 删除 namea事件

    11.1K40

    onbeforeunload事件被a链接触发问题

    onbeforeunload本身并非W3C DOM-Event标准事件,只不过在很多时候国内流氓做法就是离开页面,直接弹出收藏本网页提示(虽然我很讨厌这种做法,但事实很多公司一直都在这样默默地强奸用户...…) 言归正传,我遇到问题是,自己游戏上了新浪微游戏,在新浪微游戏顶部有它们导航,但是点击里面一些按钮时就会触发游戏里面的window.onbeforeunload事件… 搜索了一下,找到这篇文章...:BX2047: 各浏览器对 onbeforeunload 事件支持与触发条件实现有差异 根据 MSDN 中描述,IE onbeforeunload 事件可由以下这些条件触发: 关闭当前浏览器窗口...,在点击链接test2、test3时会触发iframe内window.onbeforeunload事件,test1、test4则不会,尽管页面与iframe并非同一域。...1: /** 2: * 获取鼠标在页面上位置 3: * @param ev 触发事件 4: * @return x:鼠标在页面上横向位置,

    1.9K20

    input标签checkbox选中触发事件方法

    打开页面时,根据后端返回值isRequired,设置页面的checkbox标签勾选状态,并给隐藏text标签value赋值,以便于在提交页面时把isRequired再返回给后端 2....切换checkbox标签勾选状态时,修改隐藏text标签value值,勾选是1,取消勾选是0 html代码: <input type="checkbox...name="isRequired" id="isRequiredText" style ="display: none;" value="" > js代码 //打开页面时根据后端提供数据设置页面的初始化显示...', 0); $("#isRequiredText").val("0"); } } Jetbrains全家桶1年46,售后保障稳定 //切换checkbox标签勾选状态时相应方法...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    4.7K10

    让 touch 系列事件触发滚动响应更快

    1写在前面 我们都知道,对于移动端网页而言,滚动是十分重要交互。 然而 touch 系列事件触发(滚动后)经常会引发严重性能问题。...我们看到,其中大约80%表现都是“被动(译者注:也就是并未调用 preventDefault() )”,但(开发者)却基本没将该事件监听器注册为“被动”。...因而我们做出以下优化:只要 touchstart 或者 touchmove 事件事件监听器是注册在window, document或body时候,我们会将passive默认为true,也就是说代码是这样...下图展示了用户触发滚动后到真正滚动期间,耗时最长前百分之一案例中所耗费时间。这些数据是由安卓 Chrome 访问任意网页后采集。...只有在为了阻止之后默认行为(如将要触发click事件)时,才应该在touchend事件处理函数中调用preventDefault()。

    97320

    实现ApplicationListener 事件触发两次问题

    Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { } } 但是发现这个事件触发了两次...里面代码被重复执行了 1.排查问题 原因是: 一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册Bean...对于SpringMVC容器中是可见,而在SpringMVC容器中注册Bean对于Spring父容器中是不可见,也就是子容器可以看见父容器中注册Bean,反之就不行。...详见 那么其实我们spring applicationontext和使用MVC之后webApplicationontext在刷新bean后都会调用我们onApplicationEvent方法,分别传入各自...//需要执行逻辑代码,当spring容器初始化完成后就会执行该方法。 }

    87440

    DataGrid中DropDownList动态绑定和触发DropDownList事件

    大家好,又见面了,我是你们朋友全栈君。...我在写DataGrid控件中子控件事件时候,DropDownList事件相比而言麻烦一点,在此,我简单罗列如下(我在此处为了方便这里都用DataGrid中隐藏列存储我所要数据): 一、DropDownList...动态绑定,只需在DataGrid1_ItemDataBound事件中,取出数值进行匹配,便可以了,具体代码如下: 二、触发DataGrid中DropDownList事件 前台: // 取出DropDownList选中项文本int ITid = Convert.ToInt32(item.Cells[0].Text);// 取出该行第一格数据...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.1K20

    WPF 触屏事件触发鼠标事件问题及 DataGrid 误触问题

    WPF 触屏事件触发鼠标事件问题及 DataGrid 误触问题 目录 一、触屏事件连带触发鼠标事件问题 二、DataGrid 误触问题及解决方法 独立观察员 2021 年 10 月 10 日 一、...触屏事件连带触发鼠标事件问题 这个是 WPF 已知问题,网络也有一些讨论,但是没有一个完美的方法来解决。...这个触屏事件提升为鼠标事件一个表现就是,触屏拖动或者点击,会在屏幕 “残留” 鼠标,当然,是不可见,或者表现为一个小星号。所以,从这个角度出发,产生了这样一种方法:点击后将鼠标移开。...带有 Preview 前缀是隧道事件(可视为在事件触发),没有的是冒泡事件(可视为在事件触发,此处省略)。 那么如何去除触屏事件后连带引发鼠标事件影响呢?...选是的时候不会有误触现象,选否时候,鼠标操作的话也正常,而如果在弹窗时通过触屏点击了否,然后在界面空白处(这里是在右侧信息区)触屏点击几下,就会在表格,在之前点击要切换到那一行产生一个鼠标事件

    2.8K10
    领券