我面临一个奇怪的问题。我在我的一个 Activity 类中将对象名称“term”定义为全局变量。我在显示警报对话框的方法中使用此变量。假设我首先将标题设置为 123。
term.setTitle("123");
然后我显示警报对话框。显示警报对话框的代码是:
private void displayNoteDialog() {
final CharSequence[] items = {
AgileFlashCardConstants.CREATE_NEW_NOTE,
AgileFlashCardConstants.SHOW_CUSTOM_NOTE,
AgileFlashCardConstants.EDIT_FLASH_CARD + " - " + term.getTitle()
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Note Options");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if(AgileFlashCardConstants.CREATE_NEW_NOTE.equals(items[item])) {
createNewNote();
} else if(AgileFlashCardConstants.SHOW_CUSTOM_NOTE.equals(items[item])) {
displayCustomNoteDialog();
} else if(AgileFlashCardConstants.EDIT_FLASH_CARD.equals(items[item])) {
editFlashCard();
}
}
});
builder.setPositiveButton("Close", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.setIcon(R.drawable.note_icon);
AlertDialog alert = builder.create();
alert.show();
显示并关闭警报对话框后,我的应用程序会修改“术语”以具有不同的标题。
term.setTitle("ABC");
问题是下次我再次显示 AlertDialog 时,它不会从修改后的全局对象中选择值。它继续显示最初传递的“术语”对象的值。(在本例中为“123”)
我尝试在第一次显示 AlertDialog 后将其关闭。但似乎没有帮助。不知道我在这里缺少哪一块拼图。