【问题标题】:Android - EditText saves T9 suggested valuesAndroid - EditText 保存 T9 建议值
【发布时间】:2013-07-20 19:16:33
【问题描述】:

我有一个应用程序,用户在 EditText 字段中输入文本。用户单击“确定”后(在键盘输入模式下),EditText 中的值正确(可以说“微笑”)。

if (answers.get(counter).getText().equals(opponentAnswers.get(counter)))

但是这个 if 语句失败了,因为相同的 EditText 具有 T9 选项建议的值,当用户输入他的答案时(例如 EditText 的值将是“Smile Smiling Smiled”),而它应该只有一个值“微笑”。

任何想法如何解决这个问题?

【问题讨论】:

  • 您可以关闭预测文本:myEditText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
  • 这没有帮助,T9 还在。更奇怪的是,我意识到,它会删除主要建议单词的第一个字母并将其保存为一个值。然后将任何其他建议的单词添加到该值中。

标签: android android-edittext


【解决方案1】:

这真的很奇怪。这些都是猜测,但如果我是你,我接下来会尝试:

A.不要对 getText() 做一个 equals,而是尝试在 getText() 上做一个 toString,所以:

if (answers.get(counter).getText().toString().equals(opponentAnswers.get(counter)))

B.如果这不起作用,那么您可以尝试在 EditText 上使用 addTextChangedListener 添加一个 TextWatcher,并从中获取值。在 afterTextChanged 中返回的可编辑对象上调用 toString() 可能会给你想要的值。

private class SearchTextWatcher implements 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) {
         //Get the text the user sees
         String textShownToUser = s.toString();
    }

}

希望这会有所帮助!祝你好运!

【讨论】:

  • 好吧,“toString()”确实有帮助,如果语句返回 true。更难的是,在调试器中 EditText 的 mText(SpannableStringBuilder) 具有值“Smile”,但在其子分支中 mText(id=123..) 具有建议值。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多