Я хочу показать AlertDialog с одним вариантом, который может измениться при каждом запросе. Например, когда-то я хочу показать опцию «добавить к контактам», а в другой раз - «удалить из контактов».Android AlertDialog с динамически изменяющимся текстом по каждому запросу
Мой код действительно работает в первый раз, однако Android, похоже, кэширует AlertDialog, так что onCreateDialog не будет выполнен в следующий раз. Поэтому опция больше не меняется. Могу ли я предотвратить это кеширование, или есть только другой способ изменения опции?
Я работаю с SDK 1.5, но используя 1.1.
@Override
protected Dialog onCreateDialog(final int id) {
...
String add_remove_contact = res.getString(R.string.profile_add_to_contacts);
if (user.getContacts().contains(profileID)) {
add_remove_contact = res.getString(R.string.profile_remove_from_contacts);
// TODO: this string is not changed when contact status changes
}
final CharSequence[] items = {res.getString(R.string.view_profile),
res.getString(R.string.profile_send_message),
add_remove_contact};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
...
return builder.create();
}
Диалог нужно создать только один раз, по соображениям производительности (это относительно дорогостоящая операция). Вместо того, чтобы воссоздавать его каждый раз отображается, вы можете использовать метод onPrepareDialog для внесения изменений в диалог, как он отображается, как объясняется в следующем ответе. – ChrisV
Для тех, кто все еще здесь, 'removeDialog' и' showDialog' теперь устарели. Когда Android переместился в «Фрагменты», теперь рекомендуется использовать «DialogFragment». Для получения дополнительной информации см. Ссылку на официальную документацию: http://developer.android.com/reference/android/app/DialogFragment.html –
«removeDialog» устарел, просто говоря ... –