2011-09-26 35 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()); 
    } 
} 

謝謝大家!