Может ли кто-нибудь сказать мне, почему, если я объявляю AlertDialog
, компилятор разрешает мне использовать такие методы, как setMessage()
или setTitle()
?
Dialog dialog = new Dialog(this);
Целевой уровень API - 15, минимальный - 8, поэтому код должен работать с API 8.
Большое спасибо!
3 ответа
setMessage()
не является методом классаDialog
, независимо от уровня API. Это метод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. Существует селектор уровня API, который выделяет методы, не применимые к уровню API, с которым вы хотите быть совместимым:
Поскольку Dialog не имеет этих методов, это методы AlertDialog. Вместо этого используйте AlertDialog. Пример использования можно найти здесь.
- android: minSdkVersion = "8"
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.
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.
Dialog
отличается отAlertDialog
?