账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请问两个TextView都添加了监听,怎么在onTextChanged()方法里面区分是哪个TextView发生了改变呢?
    44
    0

    1.TextView监听:

     @Override
        protected void initEvent() {
            mIvBack.setOnClickListener(v -> finish());
            mMarriageStatus.addTextChangedListener(this);    //TextView
            mKinship.addTextChangedListener(this);            //TextView
        }
    

    2.其中一个回调函数:

      @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String s1 = s.toString();
            Log.d(TAG, "1723onTextChanged: " + s1);
            if (!s1.equals("选择")) {
                mNextStep.setBackgroundResource(R.drawable.meet_steps_shape);
            }else{
                mNextStep.setBackgroundResource(R.drawable.dissatisfy_steps_shape);
            }
        }
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • ☆じ兴趣┆酒友┆ 普通会员 1楼

      在Android中,两个TextView可以使用onTextChanged()方法来监听其内容的改变,但当监听器是在两个TextView之间切换时,你需要确定哪个TextView发生改变,因为onTextChanged()方法的返回值是匿名内部类,其中的View变量是指向哪个TextView的引用。

      以下是一个简单的示例,展示了如何在onTextChanged()方法中区分两个TextView的改变:

      ```java TextView textView1, textView2; // 创建两个TextView textView1 = findViewById(R.id.textView1); textView2 = findViewById(R.id.textView2);

      // 添加文本监听器到第一个TextView textView1.setTextWatcher(new TextView.OnTextChangedListener() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 如果改变发生在第二个TextView,调用onTextChanged方法 if (textView2 != null) { textView2.setTextWatcher(new TextView.OnTextChangedListener() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 在这里,你可以根据第二个TextView的改变处理不同的逻辑,比如更新UI或发送通知等 Log.d("TextView2", "Text changed from " + s.toString() + " to " + s.toString()); } }); } } });

      // 添加文字监听器到第二个TextView textView2.setTextWatcher(new TextView.OnTextChangedListener() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 如果改变发生在第一个TextView,调用onTextChanged方法 if (textView1 != null) { textView1.setTextWatcher(new TextView.OnTextChangedListener() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 在这里,你可以根据第一个TextView的改变处理不同的逻辑,比如更新UI或发送通知等 Log.d("TextView1", "Text changed from " + s.toString() + " to " + s.toString()); } }); } } }); ```

      在这个示例中,onTextChanged()方法是两个TextView之间的共享事件处理方法,当其中一个TextView的文本发生改变时,会触发这个方法。每个TextViewsetTextWatcher方法都会被调用,每当文本发生改变时,它都会创建一个新的内部类实例,并在该实例上调用onTextChanged()方法。

      注意,由于TextViewTextView.OnTextChangedListener接口的子类,当只有一个TextView的setTextWatcher方法被调用时,另一个TextView的setTextWatcher方法将不会被调用。如果你想在两个TextView之间共享同一个TextView.OnTextChangedListener方法,你需要确保这两个TextView都实现了这个接口,或者将每个TextViewsetTextWatcher方法重写为子类,这样就可以在每个TextView上单独调用这个方法,而不必担心其中一个的TextView.OnTextChangedListener方法被调用的情况。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部