- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在使用 onPrepareDialog
方法更新 AlertDialog
的内容时遇到了一些困难。
我正在设置 AlertDialog 的内容,但是出现在屏幕上的对话框没有按钮也没有背景。问题可能与 Builder
有关。
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_USER_INFORMATION:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
return builder.create();
default:
return null;
}
}
@Override
protected void onPrepareDialog(final int id, final Dialog dialog) {
switch (id) {
case DIALOG_USER_INFORMATION:
createUserInformationAlertDialog(dialog);
break;
}
}
public void createUserInformationAlertDialog(Dialog dialogIn) {
AlertDialog alertDialog = (AlertDialog) dialogIn;
View dialoglayout = alertDialog.getLayoutInflater().inflate(
R.layout.dialog_user_info,
(ViewGroup) findViewById(R.id.dialog_user_layout_root));
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(dialoglayout);
EventAttendant ea = this.event.getCrowd().getAttendees()
.get(positionUserToHaveInformationDisplayedOnTheDialog);
final EventAttendant clone = (EventAttendant) ea.clone();
// Setting values
TextView textView = (TextView) dialoglayout.findViewById(R.id.user_name_value);
textView.setText(ea.getName());
builder.setPositiveButton(Locale_PT_BR.SEE_ON_FACEBOOK,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {/* User clicked OK so do some stuff */
}
});
builder.setNegativeButton(Locale_PT_BR.BACK,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {...}
});
builder.setView(dialoglayout);
alertDialog.setView(dialoglayout);
alertDialog.setContentView(dialoglayout);
}
最佳答案
您应该在 onCreateDialog()
中创建对话框并在 onPrepareDialog()
中更改文本。
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_USER_INFORMATION:
return createUserInformationAlertDialog();
default:
return null;
}
}
@Override
protected void onPrepareDialog(final int id, final Dialog dialog) {
switch (id) {
case DIALOG_USER_INFORMATION:
prepareUserInformationAlertDialog((AlertDialog)dialog)
break;
}
}
public Dialog createUserInformationAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton(Locale_PT_BR.SEE_ON_FACEBOOK,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {/* User clicked OK so do some stuff */
}
});
builder.setNegativeButton(Locale_PT_BR.BACK,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {...}
});
return builder.create();
}
public void prepareUserInformationAlertDialog(AlertDialog alertDialog) {
EventAttendant ea = this.event.getCrowd().getAttendees()
.get(positionUserToHaveInformationDisplayedOnTheDialog);
final EventAttendant clone = (EventAttendant) ea.clone();
View dialoglayout = alertDialog.getLayoutInflater().inflate(
R.layout.dialog_user_info, null, false);
// Setting values
TextView textView = (TextView) dialoglayout.findViewById(R.id.user_name_value);
textView.setText(ea.getName());
alertDialog.setView(dialogLayout)
}
我没有测试过这段代码,所以它可能包含一些错误。
关于android - 在 Android 上的 onPrepareDialog 上自定义 AlertDialog 的内容时透明背景和无按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7275259/
我正在制作一个应用程序,我在其中使用对话框来接受、存储和显示数据,它对我来说很有效,但是每当我重新启动我的应用程序时,都会出现NPE @Override public void onPre
这似乎不起作用。警告对话框甚至不显示标题或消息,除非我在 onCreateDialog 方法中设置它们。 @Override protected void onPrepareDialog(int id
我有一个显示复选框列表的对话框。每次打开时应检查哪些框的信息来自编辑文本。我搜索了一种不允许缓存对话框的方法,但找不到该怎么做。现在我覆盖 onPrepareDialog 以在对话框打开之前设置复选框
我创建了一个警告对话框,当我按下一个按钮时,其中有一个基本的复选框列表。如果之前已经检查过这些项目,我希望能够为用户检查复选框。我通过像这样操作“onPrepareDialog”来完成这个: @Ove
我目前正在使用以下代码在我的 Andorid 应用程序中显示/隐藏 ProgressDialog(从 MyActivity 中调用): private void startTask() { n
我正在使用以下代码创建一个 ProgressDialog (在我的 Activity 内): @Override protected Dialog onCreateDialog(int id) {
能否请任何人告诉我如何在 onPrepareDialog() 中更改警告对话框的消息(正文)。 即使在 onPrepareDialog() 函数中对 Dialog 参数进行类型转换后,我也找不到任何类
我在使用 onPrepareDialog 方法更新 AlertDialog 的内容时遇到了一些困难。 我正在设置 AlertDialog 的内容,但是出现在屏幕上的对话框没有按钮也没有背景。问题可能与
在 onPrepareDialog 中调用 removeDialog(int) 是否被认为是错误的形式,如下所示,每次使用 showDialog() 调用时强制重新创建对话框: @Override p
我是一名优秀的程序员,十分优秀!