gpt4 book ai didi

java - Android AlertDialog 在每个请求上动态更改文本

转载 作者:IT老高 更新时间:2023-10-28 21:22:03 25 4
gpt4 key购买 nike

我想显示一个带有一个选项的 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将在显示对话框之前调用的方法。在那里您可以根据请求类型更改所需的值。

日期选择器示例

@Override
protected Dialog onCreateDialog(final int id) {
switch (id) {
case DIALOG_DATE_ID:
final Calendar c = Calendar.getInstance();
return new DatePickerDialog(this, this, c.get(Calendar.YEAR),
c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH));
default:
return super.onCreateDialog(id);
}
}

@Override
protected void onPrepareDialog(final int id, final Dialog dialog) {
switch (id) {
case DIALOG_DATE_ID:
//update to current time
final Calendar c = Calendar.getInstance();
((DatePickerDialog) dialog).updateDate(c.get(Calendar.YEAR),
c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH));
break;
}
}

关于java - Android AlertDialog 在每个请求上动态更改文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/954726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com