2016-03-15 26 views
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看起来是这样的大多数设备虽然:

enter image description here

Nexus设备相同的运行代码如下所示:

enter image description here

有人知道为什么会发生这种情况吗?那么解决这个问题的正确方法是什么?

在此先感谢。

+0

你在路过的'上下文activityContext'? – CommonsWare

+0

@CommonsWare,在这个特定AlertDialog的情况下,传递的上下文是一个扩展FragmentActivity的Activity。 –

+0

这感觉就像一个主题问题。由于您无论如何都需要它来处理配置更改,因此我建议您将这些内容从“静态”方法移出并放入“DialogFragment”中,并查看是否有帮助。 – CommonsWare

回答

2

此问题的解决方案是使用支持库中的AlertDialog而不是原来的。这种进口

import android.app.AlertDialog; 

因此,所有我不得不这样做来解决这个问题被替换该进口

import android.support.v7.app.AlertDialog; 
相关问题