Android 调用字符串方法会使TextWatcher中的应用程序崩溃
我正在尝试检索在Android 调用字符串方法会使TextWatcher中的应用程序崩溃,android,event-handling,android-textwatcher,Android,Event Handling,Android Textwatcher,我正在尝试检索在EditText视图中按下的键,并将其设置为同一活动中TextView的文本。例如,如果最后按下的键是字母“t”,则我希望“t”显示在文本视图中(而不是整个字符序列) 我尝试了以下方法: phoneInput.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int afte
EditText
视图中按下的键,并将其设置为同一活动中TextView
的文本。例如,如果最后按下的键是字母“t”,则我希望“t”显示在文本视图中(而不是整个字符序列)
我尝试了以下方法:
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
中输入的最后一个字符
我也试过:
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) {}
});
我猜使用任何字符串方法都会导致崩溃,即使是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) {
}
});
你必须这样尝试
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()时使用以下代码
希望对您有所帮助。在调用onTextChanged()时使用以下代码
希望能有所帮助。@IntelliJAmiya不!不适合我。请看我的帖子,这会有帮助的you@IntelliJAmiya不!没有为我工作。请看我的帖子,它将帮助你是的!它成功了。但你能进一步解释一下吗?为什么会崩溃,为什么你的解决方案有效?你能解释一下崩溃的原因吗?1)第一行将代码转换为字符串,这是非常直接的2)第二行用于获取最后一个字符返回字符,所以我在字符引用中得到了它。如果获取字符并保存在整数变量中,则表示获取该字符的ascii码并将其保存在整数变量中。如果你用int来表示这个字符,很明显这是错误的。您需要将ascii码转换为实际字符,然后我将该字符转换为(您也可以不转换该字符),并在文本视图上设置该字符串。如果没有,希望我回答您的问题,请随时询问,但是,在清除最后一个字符的同时(通过单击并按住退格键或在只剩下一个要删除的字符时单击退格键),我的应用程序崩溃。我想我可以解决。如果我不能解决,我会再次询问。此外,我认为您的解决方案中的第三行是多余的。谢谢!是的!它成功了。但您能进一步解释吗?为什么会崩溃,为什么您的解决方案有效?您能解释一下崩溃吗?1)第一行将代码转换为字符串,这是非常直接的2)第二行用于获取最后一个字符返回字符,所以我在字符引用中得到了它。如果获取字符并保存在整数变量中,则表示获取该字符的ascii码并将其保存在整数变量中。如果你用int来表示这个字符,很明显这是错误的。您需要将ascii码转换为实际字符,然后我将该字符转换为(您也可以不转换该字符),并在文本视图上设置该字符串。如果没有,希望我回答您的问题,请随时询问,但是,在清除最后一个字符的同时(通过单击并按住退格键或在只剩下一个字符要删除时单击退格键),我的应用程序崩溃。我想我可以解决这个问题。如果我不能解决,我会再次询问。此外,我认为您的解决方案中的第三行是多余的。谢谢!在您的解决方案中,当退格为“键入”时,应用程序崩溃。此外,它只显示在EditText中输入的第一个字母。后续按键不会更改TextView的值。在您的解决方案中,当退格为“键入”时,应用程序崩溃。此外,它只显示在EditText中输入的第一个字母。后续按键不会更改TextView的值。