使用Android API级别8的警报对话框的方法

时间:2014-07-30 20:51:30

标签: android dialog alertdialog android-alertdialog

有人可以告诉我为什么如果我声明AlertDialog,那么编译器会让我使用像setMessage()setTitle()这样的方法吗?

Dialog dialog = new Dialog(this);

目标是API级别15,最小值是8,因此代码应该与API 8一起使用。

非常感谢!

3 个答案:

答案 0 :(得分:2)

    无论API级别如何,
  • 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级别的方法:

Compatibility level on the API documentation

答案 1 :(得分:1)

因为Dialog没有这些方法,所以这些是AlertDialog方法。请改用AlertDialog。可以找到用法示例here

答案 2 :(得分:1)

  1. android:minSdkVersion =“8”
  2. 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。