我遇到了一个非常奇怪的问题。我在对话框中有一个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(...)之前
答案 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());
}
}
谢谢大家!