2011-09-26 4 views
0

私は非常に奇妙な問題を抱えています。私はダイアログにeditTextを持っています。私がダイアログを一度開いて(ListViewの要素をタップして)何かすべてのことをOKにしたら次回(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 

もう1つ奇妙なことに、ディスプレイを回転させると「BobAlice」のテキストが変化します。ダイアログを閉じてからもう一度開くと、すべて正常に動作し、ダイアログに正しい文字列が表示されます。

提案がありますか?

EDIT: et_profileNameは、ListViewでアイテムをクリックすると開くダイアログにあります。私は、ダイアログを呼び出すとき

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

ここにある:私はet_profileName.setText前

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

も動作しません。(コードが

詳細...)

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

おかげで、あなたのすべてを!

関連する問題