这似乎不起作用。除非我在onCreateDialog方法中进行设置,否则警告对话框甚至不会显示标题或消息。
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
switch(id) {
case R.id.catalog_rename_dialog:
((AlertDialog) dialog).setTitle(getString(R.string.catalog_rename_prompt, catalogDb.getColumnById(selectedCatalogId, CatalogDbAdapter.KEY_NAME)));
break;
case R.id.catalog_delete_dialog:
((AlertDialog) dialog).setMessage(getString(R.string.delete_prompt, catalogDb.getColumnById(selectedCatalogId, CatalogDbAdapter.KEY_NAME)));
break;
}
}
最佳答案
我认为我有一个针对onPrepareDialog的修复程序,该修复程序不显示使用setMessage设置的消息。最初创建对话框时(当它仍然是AlertDialog.Builder时),必须将消息设置为初始状态(不为null),否则onPrepareDialog不会用预期值覆盖它。因此,在创建对话框时,请执行以下操作以使消息中始终具有非null值。我为此奋斗了几天,偶然发现了这个解决方案:
最初创建对话框时(onPrepareDialog中不存在):
AlertDialog.Builder resultAlert = new AlertDialog.Builder(context);
if ( message == null ) {
resultAlert.setMessage("");
} else {
resultAlert.setMessage(message);
}
然后在onPrepareDialog中,您应该可以使用dialog.setMessage(yourMessage)使用所需的任何字符串覆盖该值。这似乎是Google代码中的缺陷(我认为他们称其为错误。)