EditText关于删除内容会导致App闪退或退出当前Activity的详细解决方法

本文介绍了一种解决在Android应用开发中,使用EditText输入数字时,删除键操作导致Activity退出或程序崩溃的问题。通过监听删除键事件和内容变化,确保在删除所有字符后EditText不会触发异常状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运用Android Studio在开发app的过程中遇到的,想想是个普通问题但是在网上经过查询后虽然清楚了导致问题的原因(下文有描述),但是却没有适合自己的解决方式,以下是本人根据个人需求给出的解决方案。

目标:
输入数字后可以正常修改(设置的EditText只可输入数字、小数点和none)
在这里插入图片描述

问题:
测试app在EditText中填入内容并删除会导致:
情况一:退出当前Activity
在这里插入图片描述
情况二:程序崩溃

解决方法:

第一步:

//设置editText对象的键位监听事件
editText.setOnkeyListener(new View.OnKeyListener(){
	//重写onKey方法监听删除键
	@Override
	public boolean onKey(View v,int keyCode,KeyEvent event){
		//如果你按了删除键
		if(keyCode == KeyEvent.KEYCODE_DEL){
			//获取当前editText中的内容
			String text = editText.getText().toString();
			//判断text中是否有内容
			if(0<text.length()){
				//判断text中是否只有一个字符
				if(0 == text.length()-1){
					//如果只有一个则直接令editText为"",即none
					editText.setText("");
					//将焦点置于第0位,即最开始
					editText.setSelection(0);
				}else{
					//否则删除该字段的最后一个字符并将删除后的结果赋予newText
					String newText = text.substring(0,text.length()-1);
					//显示newText中的内容
					editText.setText(newText);
					//设置焦点在该字段最后
					editText.setSelection(newText.length());	
				}
			}
			return true;
		}
		return false;
	}
});

提示:这里的editText在定义调用时需要加’final’
在这里插入图片描述

第二步:

//对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) {
            }
			//这是你每次输入完后会执行的方法
            @Override
            public void afterTextChanged(Editable s) {
                //判断内容是否为""
                if(s.toString().equals("")){
                    //如果是则直接让成员变量putNumber为0
                    TransferActivity.this.putNumber=0;
                }else{
                	//如果不是则将字符串类型转换成Double类型并赋给pubNumber
TransferActivity.this.putNumber=Double.parseDouble(s.toString());
                }
            }
        });

tips:这里提到的’putNumber’是从editText中获取的数字,用于之后的运算与此问题无关

由此就解决了当前的问题。退出Activity是因为按键冲突,需要我们在onKey方法中加上对删除键(KEYCODE_DEL)的判断,而系统崩溃是由于自己的原因,当删除最后一个字符后,执行afterTextChanged方法,之前方法里我是这么写的:
在这里插入图片描述
当s为""时怎么可以将其转变成Double类型呢?还是因为自己当时没有考虑到。

最后效果:
在这里插入图片描述
不会再出现退出当前Activity的情况~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值