首页 > 其他分享 >Android,两个互相影响的EditText如何避免死循环

Android,两个互相影响的EditText如何避免死循环

时间:2023-06-22 11:34:22浏览次数:44  
标签:et2 et1 int EditText void public Override Android 死循环

简单来说,是一个类似如下的需求:

两个EditText,假设名字分别是 et1和et2;et1的值*一个数字,假设是4500=et2的值;

当 et1 的值发生变化时,et2 的值也发生变化,et2的值发生变化时,et1的值也发生变化,

用过用简单的 TextWatcher 就会发生死循环,如何避免,下面是这个例子代码的最核心部分,简单来说就是在一个事件起效果时,另外一个事件注销。

private int v1
private EditText et1, et2;
 
private TextWatcher tw1, tw2;
 
/** Called when the activity is first created. */
@Override
public void
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
 
    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);
    et1.setText("3");
    et2.setText("13500");
 
    tw1 = new
 
    @Override
    public void onTextChanged(CharSequence s, int start, int before,int
        et2.removeTextChangedListener(tw2);
        int
        try
            et1val =Integer.parseInt(s.toString());
        } catch
            et1val = 0;
        }
        Log.i("eee1", ""+et1val);
 
        int et2val = et1val * v1;
        et2.setText(""
    }
 
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,int
        }
 
    @Override
    public void
        et2.addTextChangedListener(tw2);
    }
    };

    tw2 = new
 
    @Override
    public void onTextChanged(CharSequence s, int start, int before,int
        et1.removeTextChangedListener(tw1);
        int
        try
            et2val = Integer.parseInt(s.toString());
        } catch
            et2val = 0;
        }
        Log.i("eee2", ""+et2val);
 
 
        int et1val = et2val / v1;
        et1.setText(""
    }
 
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,int
    }
 
    @Override
    public void
        et1.addTextChangedListener(tw1);
    }
    };
 
    et1.addTextChangedListener(tw1);
    et2.addTextChangedListener(tw2);
 
 
 
}

标签:et2,et1,int,EditText,void,public,Override,Android,死循环
From: https://blog.51cto.com/u_15588078/6534479

相关文章

  • Android如何实现可插拔配置?
    大家好,我是3y,一年CRUD经验用十年的markdown程序员......
  • Android 面试 | 开源库面试题
    1,HTTP与缓存理论1.1HTTP缓存策略HTTP的缓存机制也是依赖于请求和响应header里的参数类实现的,最终的响应结果是从缓存还是从服务端拉取是有一套完整的机制的,HTTP的缓存机制的流程如下所示。HTTP的缓存可以分为两种:强制缓存和对比缓存1.2强制缓存要服务端参与判断是否继续使用缓存,......
  • Android ANR 实现机制详解
    一ANR概述ANR(ApplicationNotResponding),即应用程序无响应,Android系统指定某些事件需要在规定时间内完成,如果超过预定时间还能未能得到有效响应,就会造成ANR。具体表现为,应用位于前台时,系统会向用户显示一个对话框,如下图所示。用户可以选择“wait”让程序继续运行,也可以选择“......
  • 史上最全Android性能优化方案解析
    Android中的性能优分为以下几个方面:布局优化网络优化安装包优化内存优化卡顿优化启动优化……一.布局优化布局优化的本质就是减少View的层级。常见的布局优化方案如下:在LinearLayout和RelativeLayout都可以完成布局的情况下优先选择LinearLayout,可以减少View的层级,但是注意相同组......
  • Android App运行核心,Handler,Looper,Message
    目标在手机屏幕上显示指定的区域两种方法在已存在的图片上,绘制矩形,查看图片在全屏透明悬浮窗上直接画矩形已有图片绘制矩形读取图片letimgFilepath=files.path("./chess.png");letimg=images.read(imgFilepath);设置绘制区域letrect={left:52,top:20,rig......
  • android RecyclerView嵌套 RecyclerView 子item 和 父item点击事件如何处理
    前言经常会遇到列表嵌套列表的场景,那么父item和子item会有点击重叠该怎么处理尼?先上效果父adapteropenclassStoreListAdapter(layoutResId:Int,data:MutableList<StoreGoodsBean>):BaseQuickAdapter<StoreGoodsBean,BaseViewHolder>(layoutResId,data){//子adapt......
  • Android开发必备——注解
    前言阅读官方源码以及各类第三方框架时可以发现,很多地方都有注解,作为一名Android程序员,掌握注解属于必不可少的一项技能。1.什么是注解注解是以@符号开头的用来标识如类、字段、方法等的工具。说到注解,就不得不提另外一个概念——注释,两者其实都是做解释的功能,只不过注释是面向开......
  • Android 屏幕适配基础
    Pixels和dp、sp的区别不同屏幕密度下,1p显示的物理长度不同1dp在不同屏幕上显示相同的物理长度sp只用在字体上,和dp一样为了让在不同设备上有一致的显示效果单位尺寸搞清楚屏幕的各种单位含义,是屏幕适配的基础屏幕尺寸含义:手机对角线的物理尺寸单位:英寸(inch),1英寸=2.54cm屏幕尺寸......
  • Android 多任务配置
    Android多任务配置本篇文章是为了了解安卓中的多任务系统,了解安卓中Task的栈结构,以及怎么配置app的多任务,模仿微信小程序。多任务配置在安卓手机上,当我们打开微信小程序,可以看到小程序其实是一个独立的任务,这是怎么配置的呢。其实很简单,我们只需要在安卓项目的配置文件中,对Activit......
  • 好家伙66万字,又一份牛逼的Android笔记面世了
    前言很久以前,凭借四大组件、Java基础等知识,便可开开心心的开发,轻松地上岗。而随着Android的不断发展完善,各种组件库越来越成熟,学习资料越来越多,我们却慢慢地看不到方向。信息爆炸的时代,到底该如何提升自己?如何才能找到真正利己的信息?如何才能看清前路的方向?为此我专门找了一份《And......