安卓对Edittext监听的问题
 public class MainActivity extends ActionBarActivity {
    private EditText first;
    private EditText second;
    private TextView result;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        first =(EditText) findViewById(R.id.first);
        second=(EditText) findViewById(R.id.second);
        result=(TextView) findViewById(R.id.result);
        first.addTextChangedListener(textwatcher);
        second.addTextChangedListener(textwatcher);
    }
    private TextWatcher textwatcher =new TextWatcher() {
        int f=Integer.parseInt(first.getText().toString());
        int s=Integer.parseInt(second.getText().toString());
        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
            result.setText(f+s);
        }
        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }
        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub
        }
    };

为什么编译时没有显示错误 但运行在模拟器上确程序出错停止运行了呢(XML文件是对的)

3个回答

除了判断楼上的方法,还有 result.setText(f+s); 你写成 result.setText(f+s+“”);转换成字符串

int f=Integer.parseInt(first.getText().toString());
int s=Integer.parseInt(second.getText().toString());
这两句的时候你的edittext里面的内容是空的,调用parseInt会抛NumberFormatException
你可以打开log看一看

做非空判断,打几个log就知道啦

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
安卓 如何监控多个EditText文本变化

有四个EditText,要求其中任意一个里边内容变化其他相应做出改变;怎么写比较清晰省代码? 自己个每个EditText设置了TextWatcher,感觉好麻烦。。看着太乱

安卓EditText的内容实时监听,怎么让输入拼音的时候不跟着响应

要做一个输入字数限制,但是输入拼音的时候字符也进行了判定。怎么取消这种判定

listview+edittext:如何监听edittext的修改完后的内容

listview中每个item里放一个edittext,adapter有使用对象的复用,请问如何监听到edittext中内容修改完成后,得到最后修改后的内容,再调用一个方法,然后进行其它处理

三个edittext监控的问题

![图片说明](https://img-ask.csdn.net/upload/201810/23/1540274514_826167.jpg) 初始就传入单价 要求实现当输入数量 算出总价 改变单价 算出总价 改变总价 算出单价 这怎么写监听事件?????

关于在Activity中监听 其它layout中的edittext

在ActivityA中通过viewpage 加载了三个layout 然后直接在ActivityA中的oncreate方法中 初始化其它layout中的edittext 然后去edittext.addTextChangedListener 去监听的话会出空指针的错误 但是在加载的layout中加一个button 然后在这个点击方法中去初始化 然后edittext.addTextChangedListener就不会出错 有什么办法不用后面的方法直接去监听 其它layout中的edittext啊

EditText删除内容的方法

请问下哪个大神知道EditText删除内容时间,调用的是哪个方法呢?或者怎么禁止 EditText删除内容呢?我想在监听EditText内容长度只有2个时间禁止继续删除内容。 知道的大神说下,谢谢啦。

Android中怎样获取动态添加EditText的内容

RT,在Android中如何获得动态添加EditText的输入文本内容?

android获得EditText获得焦点时报空指针异常!!

本人编程菜鸟。。遇到问题了。。第一次在csdn上提问,求解答T-T 上一个页面key的值传add是按了一个添加的按钮,下面还有add的监听器,模拟器运行后按了添加的按钮后就程序stopped了,看logcat的错误就是下面第二张图了。。实在不知道怎么解决了,我是拿了一个程序改的,页面的xml里的一堆,把一个EditText的名字改了,对应的那些文本框的名字也改了,因为是想本来是不可获取焦点的,然后点了add后,就可以添加信息,那些文本框就变成可以编辑的了。但是只是改了名字,那些setfocusable的我都改了。然而报空指针异常。。我很迷 ![图片说明](https://img-ask.csdn.net/upload/201705/11/1494486699_964000.png) ![图片说明](https://img-ask.csdn.net/upload/201705/11/1494486586_308211.png)

安卓 控件EditText 如何获取输入的duoble型的数据?

安卓 控件EditText 如何获取输入的duoble型的数据?

Android EditText中定位光标位置的问题

``` @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: int x = (int) event.getX(); int y = (int) event.getY(); x -= getTotalPaddingLeft(); y -= getTotalPaddingTop(); x += getScrollX(); y += getScrollY(); Layout layout = getLayout(); int line = layout.getLineForVertical(y); int off = layout.getOffsetForHorizontal(line, x); Selection.setSelection(getText(), off); //将光标定位到点击的位置 break; } return super.onTouchEvent(event); } ``` **上面这段代码研究了两天,终于知道是干什么的了,就是当点击EditText时,自动将光标定位到点击的位置,虽然知道代码的作用了,但是原理还是看不懂: getX()、getY()、getTotalPaddingLeft()、getTotalPaddingTop()、getScrollX()、getScrollY()在API帮助里面说得不清不楚,不知道最终计算出的x和y是什么东西,求高手解答???**

在一个EditText中验证电子邮件

我想要在一个EditText中验证一个电子邮件的地址,下边的代码是我已经写了的: final EditText textMessage = (EditText)findViewById(R.id.textMessage); final TextView text = (TextView)findViewById(R.id.text); textMessage.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { if (textMessage.getText().toString().matches("[a-zA-Z0-9._-]+@[a-z]+.[a-z]+") && s.length() > 0) { text.setText("valid email"); } else { text.setText("invalid email"); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public void onTextChanged(CharSequence s, int start, int before, int count) {} }); 问题是当我在@后引用3个字符,它出现提示“有效的邮件地址”,当我填完完整的邮件地址后它必须出现。 谢谢

如何实现TextWatcher同时监听两个EditText?

如何实现淘宝登录页面输入框监听,改变登陆按钮状态? 当账号输入框和密码输入框都不为空时,登陆按钮可点击,若有一个输入框为空时,则按钮不可点击?

安卓中的EditText怎样响应按下回车键执行自己的事件,而不是换行

安卓中的EditText怎样响应按下回车键执行自己的事件,而不是换行

我想实现一个EditText点击后出现一个日历然后返回值到EditText显示?

android 开发:我想实现一个EditText点击后出现一个日历然后返回值到EditText显示? 给一个代码示例谢谢,急用

android的edittext输入内容控制问题

效果见图,我想要实现模版名下的EditText输入内容的控制,只允许输入a-z A-Z 0-9 分号; 和汉字。以下是我自己的代码,都不能完全实现或是报错。求大神点拨 图片弄不上来,其实布局很简单,就是一个edittext和一个Button, 实现了edittext的输入要求,Button就可见并触发跳转事件 public class MainActivity extends Activity { private static String tag = "MainActivity"; private Button btn; private EditText edt, content; private final int[] code = { 8, 13, 32, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 186 }; private String digits = "0123456789abcdefghijklmnopqrstuvwxyz;"; private String tmp; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn_edit); btn.setEnabled(false); edt = (EditText) findViewById(R.id.edt); edt.addTextChangedListener(edt_watcher); // edt.setOnKeyListener(input); btn.setOnClickListener(l); } //我的思路一:键盘监听事件,监听keyCode是否在允许的按键集合中, //但会出现如果我一按不在集合中的就会刷新之前已经输入过的内容 OnKeyListener input = new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub for (int i = 0; i < code.length; i++) { if (keyCode != code) { edt.setText(tmp); edt.invalidate(); } } return false; } }; //我的思路二:文本输入监听,在监听判断后我先获取到edt.gettext然后进行一个拼接处理,然后再设置回edittext的内容中 //会出现每次输入符合的字符会在左边添加,光标始终在最左边。 在处理上有问题, 看看这里能给出处理意见 // 文本输入监听 TextWatcher edt_watcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String str = s.toString(); String edttext = edt.getText().toString(); StringBuffer sb = new StringBuffer(); // TODO Auto-generated method stub if (s.length() > 0 && str.matches("[a-zA-Z_0-9;]+") || str.matches("[\u4e00-\u9fa5]+")) { sb = sb.append(s); edt.setText(sb.toString()); Log.v(tag, sb.toString()+"======sb"); btn.setEnabled(true); } else { edttext = sb.append(tmp).toString(); Log.v(tag, edttext + "======edttext"); edt.setText(edttext); tmp = str.substring(0,s.toString().length()-2); edt.setText(tmp); btn.setEnabled(false); } Log.v(tag, s + "======s"); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { Log.v(tag, s + "======beforeTextChanged"); } //我的思路三:如下注释部分,但这里需要实现digits里包含所有的汉字,这里不知道怎么去弄 @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub Log.v(tag, s + "======afterTextChanged"); /*String str = s.toString(); if (str.equals(tmp)) { return; // 如果tmp==str则返回,因为这是我们设置的结果。否则会形成死循环。 } StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length(); i++) { if (digits.indexOf(str.charAt(i)) >= 0) { // 判断字符是否在可以输入的字符串中 sb.append(str.charAt(i)); // 如果是,就添加到结果里,否则跳过 } tmp = sb.toString();// 设置tmp,因为下面一句还会导致该事件被触发 edt.setText(tmp);// 设置结果 edt.invalidate(); } if ((str.matches("[a-zA-Z_0-9;]+") || str .matches("[\u4e00-\u9fa5]+"))) { sb.toString().substring(str.length()); } tmp = sb.toString(); edt.setText(tmp); edt.invalidate();*/ } }; //判断输入的是不是汉字,没有用上的方法 private boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { String edttext = edt.getText().toString(); StringBuffer sb = new StringBuffer(edttext); sb.append(c); edt.setText(sb); return true; } return false; } //判断是不是字母或者数字,分号,没有用上的方法, private boolean isRightData(CharSequence s) { if (s.toString().matches("[0-9;]+") || s.toString().matches("[a-zA-Z]+")) { String edttext = edt.getText().toString(); StringBuffer sb = new StringBuffer(edttext); sb.append(s); edt.setText(sb); edt.invalidate(); return true; } return false; } OnClickListener l = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, IldmActivity.class); intent.putExtra("edt", edt.getText().toString()); startActivityForResult(intent, 10); Log.v(tag, edt.getText() + "intent"); } }; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 10 && resultCode == RESULT_OK) { } }; }

Android EditText利用TextWatcher判断问题

**android 开发,有一个需求,就是利用扫描仪快速往app界面中的Edittext输入一串数字,当这串数字符合规则的时候,调用查询方法。否则不符合规则,就提示。但是大家用过这个TextWatcher的都知道,它每次改变内容都会调用方法,所以致使不到一秒的时间连续调用好多次不符合规则的情况,程序就异常了。不知道有什么方法可以解决,下面是简单的举例:** ``` package com.xzsj.measure; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.Window; import android.widget.EditText; import android.widget.Toast; public class GoneNActivity extends Activity { private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_gone_n); // 绑定EditText输入框 editText = (EditText) findViewById(R.id.editText1); // 实现文字内容改变监听(TextWatcher) editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { // 内容改变后的监听方法 if (s.toString().length() == 10) { Toast.makeText(GoneNActivity.this, "格式正确!", Toast.LENGTH_SHORT).show(); } else { // 不符合格式,(length等于10符合规则,那么这个else分支,连续执行9次,所以异常了,有没有什么办法,实现类似效果,但是不异常) Toast.makeText(GoneNActivity.this, "格式错误!", Toast.LENGTH_SHORT).show(); } } }); } } ```

如何有效存储recyclerview中的Edittext的值

如何有效存储recyclerview中的Edittext的值?用了这篇博客http://blog.csdn.net/ch1451082329/article/details/52514910的方法,我存储的是一系列int数字,存到数组里后,再从数组里遍历,只有最后一个的值是当时输入的数字,其余的值都显示为0,有没知道如何解决的?

Android输入框清除信息后键盘自动升起

最近遇到一个问题 在搜索界面有一个EditText,我输入文字后,收起键盘,然后清空输入框的文字,这时该怎样使键盘自动升起?

怎样给edittext的SpannableString设置监听?

我在写@功能,删除SpannableString时怎么获取事件

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

组成原理课程设计(实现机器数的真值还原等功能)

实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。

javaWeb图书馆管理系统源码mysql版本

系统介绍 图书馆管理系统主要的目的是实现图书馆的信息化管理。图书馆的主要业务就是新书的借阅和归还,因此系统最核心的功能便是实现图书的借阅和归还。此外,还需要提供图书的信息查询、读者图书借阅情况的查询等

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

Java8零基础入门视频教程

Java8零基础入门视频教程

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

TTP229触摸代码以及触摸返回值处理

自己总结的ttp229触摸代码,触摸代码以及触摸按键处理

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Ubuntu18.04安装教程

Ubuntu18.04.1安装一、准备工作1.下载Ubuntu18.04.1 LTS2.制作U盘启动盘3.准备 Ubuntu18.04.1 的硬盘空间二、安装Ubuntu18.04.1三、安装后的一些工作1.安装输入法2.更换软件源四、双系统如何卸载Ubuntu18.04.1新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列...

快速排序---(面试碰到过好几次)

原理:    快速排序,说白了就是给基准数据找其正确索引位置的过程.    如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾.    首先从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小(如上图中18&amp;lt...

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

HTML期末大作业

这是我自己做的HTML期末大作业,花了很多时间,稍加修改就可以作为自己的作业了,而且也可以作为学习参考

Python数据挖掘简易入门

Python数据挖掘简易入门

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

C++语言基础视频教程

C++语言基础视频教程

UnityLicence

UnityLicence

软件测试2小时入门

软件测试2小时入门

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

Python数据分析师-实战系列

系列课程主要包括Python数据分析必备工具包,数据分析案例实战,核心算法实战与企业级数据分析与建模解决方案实战,建议大家按照系列课程阶段顺序进行学习。所有数据集均为企业收集的真实数据集,整体风格以实战为导向,通俗讲解Python数据分析核心技巧与实战解决方案。

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

超详细MySQL安装及基本使用教程

一、下载MySQL 首先,去数据库的官网http://www.mysql.com下载MySQL。 点击进入后的首页如下:  然后点击downloads,community,选择MySQL Community Server。如下图:  滑到下面,找到Recommended Download,然后点击go to download page。如下图:  点击download进入下载页面选择No...

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

web网页制作期末大作业

分享思维,改变世界. web网页制作,期末大作业. 所用技术:html css javascript 分享所学所得

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问