我使用以下代码在我的应用程序中的不同场景中创建不同的AlertDialog:
public static void showAlertDialog(Context activityContext, DialogType type, CharSequence title, CharSequence msg, CharSequence posText,
DialogInterface.OnClickListener posOnClickListener, CharSequence negText, DialogInterface.OnClickListener negOnClickListener, boolean isCancelable, int iconResId) {
try {
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activityContext);
if (JavaUtils.isNotNullNotEmptyNotWhiteSpaceOnly((String) title))
alertDialogBuilder.setTitle(title);
if (JavaUtils.isNotNullNotEmptyNotWhiteSpaceOnly((String) msg))
alertDialogBuilder.setMessage(msg);
if (JavaUtils.isNotNullNotEmptyNotWhiteSpaceOnly((String) posText))
alertDialogBuilder.setPositiveButton(posText, posOnClickListener);
if (JavaUtils.isNotNullNotEmptyNotWhiteSpaceOnly((String) negText))
alertDialogBuilder.setNegativeButton(negText, negOnClickListener);
alertDialogBuilder.setCancelable(isCancelable);
// set alert icon
if (iconResId == 0) {
alertDialogBuilder.setIcon(type == DialogType.ERROR ? android.R.drawable.ic_dialog_alert : android.R.drawable.ic_dialog_info);
} else {
alertDialogBuilder.setIcon(iconResId);
}
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
} catch (Exception e) {
InfiLogger.w("showAlertDialog", e.toString(), e);
Crashlytics.logException(e);
}
}
在大多数运行Lollipop
或更高版本的设备上AlertDialog
看起来像这样:
在Nexus
设备上,相同的运行代码如下所示:
有人知道为什么会这样吗?什么是解决这个问题的正确方法?
答案 0 :(得分:2)
此问题的解决方案是使用支持库中的AlertDialog
而不是使用原始版本。
因此,解决此问题所需要做的就是替换此导入:
import android.app.AlertDialog;
使用此导入:
import android.support.v7.app.AlertDialog;