2016-03-15 25 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; 
相關問題