调用 String 方法会使 TextWatcher 中的应用程序崩溃

Calling String methods crashes the application inside TextWatcher

我正在尝试检索在 EditText 视图中按下了哪个键,并将其设置为同一 activity 中 TextView 的文本。例如,如果最后按下的键是字母 't',那么我希望 't' 显示在 TextView 中(而不是整个字符序列)。

我尝试了以下方法:

phoneInput.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) {
        tracker.setText(s.charAt(start));
    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});

这导致了崩溃。我不确定,但看起来 start 是最后一次按键时附加的字符的索引,所以 TextView 应该显示在 EditText?[=19= 中输入的最后一个字符]

我也试过这个:

phoneInput.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) {
        String sequence = s.toString();
        tracker.setText(sequence.charAt(sequence.length() - 1));
    }

    @Override
    public void afterTextChanged(Editable s) {}
});

我猜想使用任何 String 方法都会导致崩溃,即使是 length()。我做错了什么?

你必须这样尝试

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

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                textView.setText(String.valueOf(charSequence.charAt(i1)));
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

在 onTextChanged() 的回调中使用下面的代码

  String text = charSequence.toString();
            if (text.length() >0) {
                Character character = text.charAt(text.length()-1);
                Character character1 = character;
                tv.setText(character1.toString());
            } else {
                // if you want to remove last character too then setText(""");
            }

希望对您有所帮助。