Question

J'ai été ralenti l'apprentissage et la construction de ma première application Android. Je suis très nouveau pour Java, mais ont déjà fait quelques projets en C #, VB.NET (retour dans la journée), Objective-C (6 ont des applications dans le magasin) et Fortran (waaaaaaaaaaaaaaaaaaaay dans la journée;)

Je viens de recevoir à l'étranger une légende htc (je ne suis pas aux États-Unis), qui je l'ai acheté afin d'avoir un dispositif de niveau intermédiaire décent pour le développement (il est en cours d'exécution adnroid 2.1 non enracinées)

L'application je développe est le niveau cible 4 (androïde 1,6). Il utilise une base de données de 5 Mo avec une extension .mp3 pour éviter la compression dans le apk et une bonne copie des actifs dans le dossier système.

Tout fonctionne très bien sur l'émulateur, et sur l'appareil que je vois la taille du fichier de l'application après avoir copié la base de données correspond exactement à ce que je vois sur l'émulateur.

maintenant, sur mon activité principale en vue de la liste et une fileuse, je lie des données par le biais de deux cartes tableau. lors de l'exécution sur l'appareil fait tout en douceur. mais en essayant de courir sur l'appareil cette partie du code:

public class mainAct extends Activity implements OnItemSelectedListener, TextWatcher, OnItemClickListener
{   
        /** members */
        //private EditText searchtext;
        private ListView designations;
        private ArrayAdapter<String> adapterShapes;
        private ArrayAdapter<String> adapterTypes;
        private Spinner types;
      .  
      .  
      .    
    public void onCreate(Bundle savedInstanceState)   
    {  
      .  
      .  
      .    
        // DESIGNATIONS  
        // 
        adapterShapes = new ArrayAdapter<String>(this,R.layout.list_item,shapes);       // custom TextView Adapter  
        designations=(ListView)findViewById(R.id.designations);
        Log.e("MAIN.ACCT", "ok to 172");
        designations.setAdapter(adapterShapes);
        Log.e("MAIN.ACCT", "ok to 174");
        designations.setOnItemClickListener(this);

        // TYPES
        //
        adapterTypes=new ArrayAdapter<String>(this,R.layout.spinner_item,DT.get().typesInLibrary);
        types=(Spinner)findViewById(R.id.types);
        types.setAdapter(adapterTypes);
        types.setOnItemSelectedListener(this);
      .  
      .  
      .  
    }
}

Les deux designations.setAdapter (adapterShapes);
& types.setAdapter (adapterTypes);

me donner une exception pointeur nul.

J'utilise Eclipse sous Mac, la fenêtre LogCat lance:

  

25.6 18: 41: 37,842:   ERREUR / AndroidRuntime (9523): Uncaught   gestionnaire: fil Quitter principal en raison de   exception uncaught

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523):   java.lang.RuntimeException: Impossible de   activité début   ComposantInfo {com.davidhomes.steel / com.davidhomes.steel.mainAct}:   java.lang.NullPointerException

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2596)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à

     

android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2621)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   android.app.ActivityThread.access 2200 $ (ActivityThread.java:126)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1932)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   android.os.Handler.dispatchMessage (Handler.java:99)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   android.os.Looper.loop (Looper.java:123)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   android.app.ActivityThread.main (ActivityThread.java:4595)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   java.lang.reflect.Method.invokeNative (natif   Méthode)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   java.lang.reflect.Method.invoke (Method.java:521)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   dalvik.system.NativeStart.main (natif   Méthode)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): provoqué par:   java.lang.NullPointerException

     

  -------------------------------------------------- ------------ 06-25 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   com.davidhomes.steel.mainAct.onCreate (mainAct.java:183)

     

---------------------------------------- ----------------------

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): à   android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2544)

     

25.6 18: 41: 37,891:   ERREUR / AndroidRuntime (9523): ... 11   plus

     

25.6 18: 46: 38,252:   ERREUR / ActivityManager (99): ne définissez pas   app top changé!

Ligne 183 est le premier appel setAdapter (designations.setAdapter (de adapterShapes);), quand je la mettre en commentaire la deuxième setAdapter est une rupture de code

Je suis un peu perdu ici, les adaptateurs montrent le bon nombre d'éléments dans la fenêtre du journal lors de l'exécution du simulateur et l'appareil.

J'avoue être un noob à Java et Android, de sorte que toute aide est très appréciée.


ce qui concerne david

Était-ce utile?

La solution 2

Oops! il était de ma faute tout au long, en quelque sorte j'avais deux mises en page (une pour différentes résolutions), celui utilisé sur mon appareil n'a pas eu la bonne ListView et ID Spinner. Cette disposition alternative était l'effondrement dans un dossier et je viens oublié (je l'avais mis en pause le développement de l'application pendant environ 2 mois jusqu'à ce que je fait eu un appareil test).

celui qui travaille bien installait sur le simulateur, mais pas sur l'appareil et vice-versa, bizarre comme bon correspond à la résolution de mon appareil (je suis sûr que je me manque aussi quelque chose mais ce n'est pas important en ce moment)

Encore, merci Chris me montrant regarder la valeur de retour de nulle sur findViewById. Être nouveau android je perdu à commencions

Meilleures salutations david

Autres conseils

Eh bien, comme vous l'avez sans doute compris vous-même, une variable est nulle. Malheureusement, il n'y a pas de source évidente de la NullPointerException dans votre code.

Par conséquent, vous devez d'abord essayer d'identifier quelle variable est nulle, et provoque donc l'exception.

Par exemple, findViewById rendement null si elle ne trouve pas la vue, vous pouvez vérifier votre ListView et Spinner sont initialisés correctement.

Bien sûr, le problème peut être avec vos ArrayAdapters, vous devriez donc aussi les vérifier, mais de votre question, il semble que vous avez déjà fait.

Une fois que vous (et nous) de savoir exactement où l'NullPointerException se produit, il sera plus facile de donner des conseils plus spécifiques

Je sais que ce sujet est longtemps fermé. Cependant, je viens de tomber sur le même problème et ce poste n'y ai pas répondu.

Qu'est-ce que je l'ai fait, était très stupide. J'ai oublié d'ajouter une référence au xml. c'est à dire. setContentView (R.layout.settings);

il ressemble réellement le message original aurait aussi oublié ce donc je pensais que je voudrais juste le publier. Vive.

J'ai eu le même problème. Je mets des messages Log.d dans l'impression sur chaque objet. Il est avéré que mon objet ListView était « nulle ». La raison est que j'avais l'activité XML mal énumérés dans mon setContentView. Je pense que la meilleure façon de déboguer ce problème est continuer à mettre dans les messages Log.d jusqu'à ce que vous trouviez l'objet / variable qui est « nulle ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top