有人可以告诉我为什么如果我声明AlertDialog
,那么编译器会让我使用像setMessage()
或setTitle()
这样的方法吗?
Dialog dialog = new Dialog(this);
目标是API级别15,最小值是8,因此代码应该与API 8一起使用。
非常感谢!
答案 0 :(得分:2)
setMessage()
都不是类Dialog
的方法。这是AlertDialog
。
Dialog(Context)
和setTitle()
在Android 8下工作。
更一般地说,我在API 8中使用以下代码没有问题。这是基于AlertDialog
的一段代码,但在您谈到setMessage()
时,它听起来与您的用例一致。
AlertDialog dlg = null;
if (!activity.isFinishing()) {
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(resTitle)
.setMessage(text)
.setCancelable(false)
.setPositiveButton(resOk, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
if (notify != null) { // 'notify' is a Handler
notify.sendEmptyMessage(MODAL_ALERT_SEEN);
}
dialog.dismiss();
}
}
);
dlg = builder.create();
dlg.show();
}
有关详细信息,请查看官方API documentation。有一个API级别选择器可以显示不适用于您希望与之兼容的API级别的方法:
答案 1 :(得分:1)
因为Dialog没有这些方法,所以这些是AlertDialog方法。请改用AlertDialog。可以找到用法示例here。
答案 2 :(得分:1)
android:targetSdkVersion =“15”
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("Alert Builder");
alertDialogBuilder.setMessage("AlertDialog in API level 8");
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
它适合我Happy Coding。