2011-09-26 70 views
0

我被卡住了一个很奇怪的问题。我在对话框中有一个editText。如果我一次打开对话框(点击ListView的一个元素)并做一些事情都可以。如果我下次打开对话框(点击ListView的另一个元素),editText将显示第一次相同的值。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

也许et_profileName引用第一个EditText – Rodrigo

+0

是ListView中的EditText,还是它在对话框中,当您单击ListView中的项目时打开 – Noel

+1

我的建议是添加更多代码。 –

回答

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()); 
    } 
} 

谢谢大家!