【发布时间】:2019-04-29 15:25:51
【问题描述】:
我的 android 代码中有一个 EditText,我想在用户停止编辑该字段后显示一条 Toast 消息。
final EditText kurz = findViewById(R.id.kurz);
kurz.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) { Toast.makeText(context, getString(R.string.saved_settings), Toast.LENGTH_SHORT).show();}
@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) {
String waketime = String.valueOf(kurz.getText());
getSharedPreferences("MY_PREFERENCE", MODE_PRIVATE).edit().putString("xxxx", waketime).apply();
}
else { kurz.setText("1");
}
}
});
首先,我尝试将 Toast 添加到 onTextChanged - 从逻辑上讲,每次用户更改字段中的任何内容时,这都会显示 Toast。
然后正如您在我的代码中看到的那样,我将 Toast 放入 afterTextChanged,但没有任何改变。每次用户键入任何内容时都会显示该消息,因此该消息会显示很多次。
我只想在用户编辑完字段后显示一次 Toast(焦点停留在那里,因为这是唯一的字段)。
所以如果编辑后有 5 秒的暂停,这意味着用户可能完成了编辑并仅在这种情况下显示 toast
【问题讨论】:
-
有没有更好的方法来确定用户完成输入而不是 5 秒超时?
-
你在问我吗? :) 我只是提出了这个想法,不确定是否有其他解决方案可以做到这一点。实际上我可以使用计时器,但计时器每次都会创建新线程来运行任务。例如。如果用户插入 100 个字符,计时器启动 100 次
标签: android android-edittext android-toast