2011-08-07 1 views
0

J'ai rencontré un peu un problème étrange. J'essaie d'afficher un AlertDialog avec une liste lorsque l'utilisateur appuie sur un bouton. Le code suivant fonctionne parfaitement lorsque j'exécute l'application sur un périphérique ou un émulateur. Toutefois, si j'exécute l'application sous le débogueur sur un périphérique ou un émulateur, le code provoque une exception et nous pénétrer dans le débogueur sur builder.show();.Android AlertDialog avec la liste se bloque en mode de débogage mais pas de sortie

Ceci est un problème car j'essaie de déboguer une branche qui vient après avoir sélectionné quelque chose dans ma liste. Le débogueur apporte ViewGroup.class quand il casse, bien que je ne peux pas vous dire la ligne spécifique parce que je ne pense pas que j'ai tout à fait avoir la bonne source android.

Vous ne savez pas pourquoi cela se bloque dans le débogage?

Callback:

public View.OnClickListener selectCategoryClick = new View.OnClickListener() { 

    final String[] categories = new String [] {"A","B","C"}; 

    @Override 
    public void onClick(View v) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(MyApp.this); 
     builder.setTitle("Select a category"); 
     builder.setItems(categories, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
        //Do something with which 
       } 
      }); 
     builder.show(); 
    } 
}; 
+1

Que diriez-vous de la pile de pile? – WarrenFaith

+0

Salut Aaron essayez avec MyApp.getParent(), peut-être utilisez-vous TabActivity. – bHaRaTh

Répondre

0

Je enfin a obtenu le code source droit d'aligner la version du SDK que j'utilisais (grâce à http://blog.michael-forster.de/2008/12/view-android-source-code-in-eclipse.html?showComment=1299971635442#c3854025611409009224). Une fois que je trouve la ligne origine du problème immédiatement la cause est devenue claire:

public View getChildAt(int index) { 
    try { 
     return mChildren[index];      <---- Crash line 
    } catch (IndexOutOfBoundsException ex) { 
     return null; 
    } 
} 

j'avais mis un point d'arrêt sur tous les ArrayIndexOutOfBoundsException s et oublié de l'enlever. Maintenant, le code fonctionne bien.

Mon erreur stupide, merci les gars pour les commentaires.

Questions connexes