о прослушивателе редактирования текста в Android studio, TextWatcher не работает

#java #android

#java #Android

Вопрос:

new TextWatcher подразумевает красное подчеркивание… почему? Я нашел способ использовать TextWatcher , просматривая блоги. Большинство людей используют подобное. Чего мне не хватает? Кроме того, я хочу изучить программирование на Android, но я знаю только язык C. Должен ли я сначала изучать Java?

 package org.techtown.p4;

import android.os.Bundle;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity
{
    EditText editText;
    TextView textView;

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

        editText=(EditText)findViewById(R.id.editTextTextMultiLine);
        textView=(TextView)findViewById(R.id.textView1);

        String string=editText.getText().toString();
        int cnt=string.length();

        textView.setText("" cnt);

        editText.addTextChangedListener(new TextWatcher()
        {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count)
            {
                String string=editText.getText().toString();
                int cnt=string.length();

                textView.setText("" cnt);
            }
        });
    }
}
  

Комментарии:

1. Приложения для Android написаны на Java или Kotlin, так что да, если вы изучаете эти языки, это может очень помочь.

Ответ №1:

TextWatcher — это интерфейс, вы должны реализовать все методы, определенные в интерфейсе. Если вы используете Android Studio, нажмите ALT INSERT в TextWatcher, IDE подскажет вам, что делать.

 editText.addTextChangedListener(new TextWatcher()
{
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count)
    {

    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
});
  

Комментарии:

1. @ddodogas Не могли бы вы принять или поддержать ответ ^_ ^

Ответ №2:

Я думаю, это потому, что вы не реализовали два других метода, которые предоставляются классом TextWatcher, пожалуйста, проверьте приведенный ниже код

 field1.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}

@Override    
public void beforeTextChanged(CharSequence s, int start,
 int count, int after) {
}

@Override    
public void onTextChanged(CharSequence s, int start,
 int before, int count) {
  if(s.length() != 0)
    field2.setText("");
}
});