- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我需要在 EditText
中捕获最终出现的文本。
这是我的简单代码。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.edit_text);
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) {
}
@Override
public void afterTextChanged(Editable editable) {
Log.i("CHEOK", ">>>" + editable.toString() + "<<<");
doSomething(editable.toString());
}
private void doSomething() {}
});
}
}
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine|textNoSuggestions"
android:imeOptions="actionSend" />
这是它的行为方式。
当我按下 ENTER 时
afterTextChanged
被触发一次,输出如下。
>>>123
456<<<
当我按下 ENTER 时
afterTextChanged
被多次 触发,输出如下。
>>>def<<<
>>><<<
>>>abc
<<<
>>>abc
def<<<
我对中间的中间文本不感兴趣。我只对最终文本感兴趣(abc\ndef
)
我怎么可能有这样的东西
@Override
public void afterTextChanged(Editable editable) {
if (isFinalText(edittable.toString())) {
doSomething(editable.toString());
}
}
不关闭拼写建议。
我不介意扩展 EditText
,并在其中进行一些修改。但是,我曾尝试在 EditText
中覆盖 dispatchKeyEvent
和 onKeyPreIme
。不确定为什么他们没有被调用。
我也在尝试 https://stackoverflow.com/a/8063533/72437 中讨论的 onEditorAction
技术 它不适用于我的情况,因为我的 EditText
是多行的。
最佳答案
最后我得出结论:
editText.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) {
}
@Override
public void afterTextChanged(Editable s) {
if (prevString.length() >= s.length()) {
if (userIsInteracting) {
doSomething(s.toString());
}
} else {
doSomething(s.toString());
}
prevString = s.toString();
}
});
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL)
userIsInteracting = true;
Log.d("key event", keyCode + event.toString());
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
userIsInteracting = false;
}
}, 1000);
return false;
}
});
请尝试一下,它肯定会起作用。我尝试并完美地工作。快乐编码!!!
关于android - 如何接收带有拼写建议的 EditText 的最终 afterTextChanged 事件(不关闭),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49443496/
我在 onItemSelect 中有一些修改 EditText 的代码,但在此之前我删除了它的 TextWatcher。不管怎样,在我修改 EditText 后立即调用 afterTextChange
我试图设置它,以便当我在 EditText 字段中输入内容时,它会更改文本颜色并将变量设置为输入数字的值。但是,当我从字段中删除字符时,它会触发关闭应用程序的错误。我想我可能需要找到一个不依赖于长度的
text.addOnTextChanged(new TextWatcher() { @Override public void afterTextChanged(Editable s) {
我试图实现 Textwatcher 接口(interface),我试图在 afterTextChanged() 中更改文本,但它崩溃了。为什么会崩溃? : @Override
我无法在 Edittext 中添加两位数并计算最终价格。我对一位数字没有任何问题。但是当我想添加两位数时我的应用程序关闭了。 edt_value.addTextChangedListener(
我发现每次 EditText 文本更改时都会调用 afterTextChanged() (这就是它崩溃的原因),但我不知道如何解决问题。谁能帮帮我! 设置编辑文本并添加addTextChangedLi
问题是 adapter 设置后我无法更新。对于第一个字符,它工作正常,但如果我想更改它,adapter 会继续查看相同的建议。如何更新适配器?这是我的代码。 public class UzActivi
我正在使用 TextWatcher 来监听按键输入。当用户键入“@”时,我会打开一个列表 Activity ,用户必须从列表中进行选择。选择后,我将所选项目的文本(包括初始@)放置到编辑文本中,然后继
我有一个带有 EditText 的 fragment ,在 onCreateView() 内我将 TextWatcher 添加到 EditText. 每次第二次添加 fragment 时,都会调用 a
输入法管理器 https://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html 在中文输
我的代码: fractionNumEt.addTextChangedListener(new TextWatcher() { boolean ignoreChange = fa
我的应用程序中有一个 autoCompleteTextView,当用户完成输入时,它会检查其 afterTextChanged 方法,并根据用户输入的代码将用户重定向到下一个详细信息页面,但问题是当用
我有一个扩展 TextWatcher 以检测某些 EditText 中的变化的 Activity,因此它实现了: public void afterTextChanged(Editable s) 我的
我有一个 EditText,我想当用户键入除 之外的非数字字符时, edittext 删除该字符 。 例如,我希望 editText 接受文本像这样:5451,56589,7545 当用户输入一个非数
我有一个 EditText,我正在向其中设置一个错误或在文本更改后消除错误。但是,当我尝试从 afterTextChanged() 方法访问 EditText 时,我遇到了NPE。 phone_num
我使用以下代码将 Uri 图像插入到 SQLite 中: 注册 private void insertData( String name,String pass, Uri image) throws
什么情况下应该使用afterTextChanged而不是onTextChanged,反之亦然? 最佳答案 这些事件按以下顺序调用: beforeTextChanged(CharSequence s,
我在我的应用程序中添加了 AutoCompleteTextView。我在其中对这两种方法进行了编码,即 afterTextChange() 如果一个人写了完整的单词并且不点击建议和 OnItemCli
目前,我需要在 EditText 中捕获最终出现的文本。 这是我的简单代码。 主 Activity .java public class MainActivity extends AppCompatA
我有一个方法 drawItems(),它每次都会创建一个新布局并将其设置为 contentView。而且我还有一个控件 EditText,它应该在内容更改时删除其他元素。 edit.addTextCh
我是一名优秀的程序员,十分优秀!