2011-05-04 3 views
1

J'ai modifié mon fichier main.xml et mon application android s'est écrasée.findViewById lève une RuntimeException

je lance débogueur et trouve jeté une RuntimeException dans

ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2663 

Je ne comprends pas le bug dans mon programme. Je Bisected le code, et trouve cette ligne jeta:

giveUpButton = (Button) findViewById(R.id.GiveUpButton); 

Je suis sûr que l'exception a disparu après avoir enlevé cette ligne.

Je n'ai aucune idée. Pourquoi le sommet de la pile n'est-il pas findViewById? Pourquoi lance-t-il une exception?

Je possède ce code main.xml:

<Button 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/give_up_button" 
android:id="@+id/GiveUpButton"/> 
+0

Si findViewById ne peut pas trouver le point de vue, il retournera null au lieu de jeter un RuntimeException. Je suis très confus. –

+1

Que contenait le logcat? – CaseyB

+0

Oui, s'il vous plaît nous montrer le reste de la trace d'exception. – adamp

Répondre

3

Je sais que ça sonne comme une blague. Mais j'ai résolu le problème en redémarrant mon Eclipse.

Il est très probablement causé par la caisse de Git. Je passe d'une branche à l'autre sans fermer Eclipse.

Comment puis-je éviter un tel problème? Il a fallu beaucoup de temps pour redémarrer Eclipse encore et encore.

+1

J'ai vu quelque chose de similaire se produire de temps en temps en utilisant Eclipse. AFAIK le problème est survenu une fois que j'ai enregistré une modification dans le code et le fichier xml de mise en page dans un 'Enregistrer tout'. Cela semble confondre la construction d'une manière dont l'application ne démarre jamais - mais je n'ai jamais creusé la cause première. Juste en disant cela semble similaire. Ce que j'ai fait dans ces cas est de sélectionner "Nettoyer .." dans le menu Projet. – harism

+0

La prochaine fois, essayez un "Clean" de votre projet et voyez si cela fonctionne avant de redémarrer. –

+0

merci! J'ai redémarré et il ne suffisait pas, j'ai fait un Clean et maintenant ça marche! Je pense que vous pouvez valider votre propre réponse. – NicoMinsk

0

vous a fait

setContentView(R.layout.main) 

avant la ligne

giveUpButton = (Button)findViewById(R.id.GiveUpButton); 
Questions connexes