1
我用下面的代码创建在我的应用程序不同的场景不同AlertDialogs:问题:AlertDialog看起来不同的Nexus设备上:
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
设备相同的运行代码如下所示:
有人知道为什么会发生这种情况吗?那么解决这个问题的正确方法是什么?
在此先感谢。
你在路过的'上下文activityContext'? – CommonsWare
@CommonsWare,在这个特定AlertDialog的情况下,传递的上下文是一个扩展FragmentActivity的Activity。 –
这感觉就像一个主题问题。由于您无论如何都需要它来处理配置更改,因此我建议您将这些内容从“静态”方法移出并放入“DialogFragment”中,并查看是否有帮助。 – CommonsWare