Ulr*_*ler 25 java android android-alertdialog
我想显示一个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();
}
Run Code Online (Sandbox Code Playgroud)
Jaa*_*iim 33
看一下将在显示对话框之前调用的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;
}
}
Run Code Online (Sandbox Code Playgroud)
And*_*ess 19
您还可以使用Activity 的removeDialog(int)函数.当一个对话框被解除时,Activity基本上存储了对话框的状态(出于我想象的性能原因).在对话框上调用removeDialog(int)会强制活动卸载对话框的所有引用,并在显示时将其从屏幕上解除.
| 归档时间: |
|
| 查看次数: |
38552 次 |
| 最近记录: |