後不正確的字符串我使用的是TextWatcher聽鍵輸入。當用戶鍵入'@'時,我打開一個列表活動,用戶必須從列表中選擇。一旦選擇,我將所選項目的文本(包括初始@)放到編輯文本中,然後進行正常編輯。TextWatcher.afterTextChanged有退格
的問題是,當我按空格鍵,我在aftertextchanged事件而得到的字符串是錯誤的,listactivity再次彈出。
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
String str = s.toString();
if (str.length() > 0)
{
if (str.substring(str.length() - 1).equals("@"))
{
Intent i = new Intent(MessageComposeActivity.this, MembersListActivity.class);
startActivityForResult(i, Util.MEMBERS_LIST);
}
}
}
});
而且在onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Util.MEMBERS_LIST)
if (resultCode == RESULT_OK)
{
editText.setText(editText.getText().toString() + data.getExtras().get("screenname") + " ");
editText.setSelection(editText.getText().length());
}
}
例如:
在我的EditText型 '@',活動彈出,我選擇 '詹姆斯'。 EditText現在顯示@James。 如果我按回退一次或兩次,EditText顯示@Jam時,再次彈出listactivity。
PS:本afterTextChanged()被調用有時兩次退格(或任意鍵),在afterTextChanged的第二次執行()我得到錯誤的輸入字符串。在afterTextChanged()的第一次執行時,我得到了@Jam,在第二次執行時我得到了'@',因此彈出了listactivity。
問: 爲什麼afterTextChanged()被調用了兩次,爲什麼在第二次執行我得到錯誤的文字?
非常感謝。
請不要「乞求bug」。很有可能它不是圖書館裏的一個錯誤......清楚地說明問題和問題,看看它是什麼。 – 2013-02-08 05:49:03
任何可能的解決方案? – droidbee
我看到類似的東西,很想找到答案... – joseph