EditText显示错误的文本

时间:2011-09-26 20:54:17

标签: android rotation android-edittext

我遇到了一个非常奇怪的问题。我在对话框中有一个editText。如果我打开一次对话框(点击ListView的一个元素)并做一些事情都可以。如果我下次打开对话框(点击ListView的不同元素),editText会显示第一次的相同值。

toast(profilesList.get(toEdit).get(NAME).toString()); //toast say Bob
et_profileName.setText(profilesList.get(toEdit).get(NAME).toString()); //I see Alice

另一件奇怪的事情:如果我旋转显示器,文字会改变“BobAlice”。如果我关闭对话框,然后我重新打开它,一切正常,对话框显示正确的字符串。

有什么建议吗?

编辑: et_profileName位于单击ListView中的项目时打开的对话框中。

更多代码:

protected Dialog onCreateDialog(int id) {
    dialog = new Dialog(this);
    ...
    et_profileName= (EditText)dialog.findViewById(R.id.et_profileName);
    ...
}

这是我打电话给对话框的时候:

showDialog(DIALOG_EDIT_PROFILE);
toast(profilesList.get(toEdit).get(NAME).toString());
et_profileName.setText(profilesList.get(toEdit).get(NAME).toString());

如果我把

也不行
et_profileName= (EditText)dialog.findViewById(R.id.et_profileName);
<_>在et_profileName.setText(...)

之前

1 个答案:

答案 0 :(得分:0)

解决:

应覆盖onPrepareDialog(int id, Dialog dialog)以准备 在显示之前管理对话框。

添加了此代码,它可以工作:

@Override
protected void onPrepareDialog(int id, Dialog dialog){
    et_profileName= (EditText)dialog.findViewById(R.id.et_profileName);
    if(id==DIALOG_EDIT_PROFILE){
        et_profileName.setText(profilesList.get(toEdit).get(NAME).toString());
    }
}

谢谢大家!