Journal d'alerte Android Background Issue API 11+

Je crée un AlertDialog avec le code ci-dessous. Pour une raison quelconque, je reçois un arrière-plan supplémentaire (voir photo) sur Honeycomb et ci-dessus. Le code s'arrête bien pour n'importe quoi ci-dessous en nid d'abeille. MyCustomDialog est simplement Theme.Dialog pour <API-11 et Theme.Holo.Dialog pour API-11 et plus.

  1. Une idée de pourquoi j'en ai l'arrière-plan supplémentaire?
  2. Une idée pourquoi il se bloque pour API <11? Cela fonctionne bien si je supprime le thème.

La mise à jour a révélé la réponse à la question n ° 2. On dirait que le constructeur AlertDialog.Builder(Context context, int theme) été introduit dans l'API 11. Mon correctif était simplement de changer la ligne vers:

  • Butterknife @ InjectView issue après la mise à jour vers 7
  • Android: comment étendre FragmentActivity et actionbaractivity
  • Charger un fichier de stockage externe vers Inputstre
  • Android loopj Async Http se bloque après la mise à jour 1.4.5
  • FAB Couleur pour l'arrière-plan Ne modifiez pas les appareils de version Gingerbread
  • Comment ajouter le rembourrage entre les éléments du menu dans Android?
  •  final AlertDialog.Builder builder = (Integer.parseInt(android.os.Build.VERSION.SDK) < 11)? new AlertDialog.Builder(this) : new AlertDialog.Builder(this,R.style.JumpDialog); 

    J'ai toujours besoin d'aide pour la Question n ° 1

    Entrez la description de l'image ici

     private Dialog setupKeyBoardDialog() { if (mContact.getLocaleId() != -1) { final AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.MyCustomDialog); builder.setTitle("Keyboards"); mKeyboardLayouts = new KeyboardLayoutGroup(); mKeyboardLayouts.layoutNames = new CharSequence[(int) jni.getNumKeyLayouts()]; mKeyboardLayouts.layoutValue = new ArrayList<Integer>(); for (int i = 0; i < jni.getNumKeyLayouts(); i++) { mKeyboardLayouts.layoutNames[i] = jni.LayoutInfoForIndex(i).getName(); mKeyboardLayouts.layoutValue.add(i, (int) jni.LayoutInfoForIndex(i).getLocale_id()); } final int selectedItem = mKeyboardLayouts.layoutValue.indexOf(mContact.getLocaleId()); builder.setSingleChoiceItems(mKeyboardLayouts.layoutNames, selectedItem, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int item) { mContact.setLocaleId(mKeyboardLayouts.layoutValue.get(item)); mContactsDB.saveContact(mContact, true); dialog.dismiss(); initializeSettingsList(); } }); final AlertDialog dialog = builder.create(); dialog.setButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogBox, int arg1) { dialogBox.cancel(); } }); return dialog; } return null; } 

  • Comment mettre Google Maps V2 sur un Fragment à l'aide de ViewPager
  • Image déformée avec Camera et getOptimalPreviewSize
  • Comment cacher ActionBar / Toolbar tout en défilant vers le bas dans le Webview
  • Eclipse essaie de construire les fichiers dans mes répertoires .svn ... comment puis-je vous dire de m'arrêter?
  • Modification des boutons d'action sur une notification
  • Déclaration de format dans un fichier de ressource de chaîne
  • 3 Solutions collect form web for “Journal d'alerte Android Background Issue API 11+”

    Décrit les réponses

    1. AlertDialog dispose de constantes statiques pour chaque thème dans la classe AlertDialog et ne prend pas le thème standard. Lorsque j'ai remplacé R.style.MyTheme ou android.R.style.Theme_Holo_Dialog R.style.MyTheme avec AlertDialog.THEME_HOLO_LIGHT le code fonctionne très bien.
    2. On dirait que le constructeur AlertDialog.Builder(Context context, int theme) été introduit dans l'API 11. Mon correctif était simplement de changer la ligne vers:

       final AlertDialog.Builder builder; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { builder = new AlertDialog.Builder(this); } else { builder = new AlertDialog.Builder(this,R.style.JumpDialog); } 

    Vous pouvez essayer d'utiliser le new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.JumpDialog)) au lieu du new AlertDialog.Builder(this, R.style.JumpDialog)

    Pour ceux qui recherchent un moyen de personnaliser le thème de la boîte de dialogue sans avoir à respecter les paramètres par défaut (comme dans la solution acceptée), en commençant par Lollipop, il semble que l'arrière-plan supplémentaire a été finalement supprimé. Donc, maintenant, vous pouvez créer un thème héritant de l'option par défaut (exemple avec AppCompat):

     <!-- default theme for L devices --> <style name="SelectionDialog" parent="Theme.AppCompat.Light.Dialog"> <item name="android:textColor">@color/default_text_color_holo_light</item> </style> <!-- theme for Pre-L devices --> <style name="SelectionDialog.PreL"> <!-- remove the dialog window background --> <item name="android:windowBackground">@color/transparent</item> </style> 

    Et instanciez votre générateur avec ce code:

     AlertDialog.Builder builder = new AlertDialog.Builder( getActivity(), Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT ? R.style.SelectionDialog : R.style.SelectionDialog_PreL); 

    Bien sûr, cela pourrait également être fait avec les dossiers de ressources ( values/ et values-v21/ ).

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.