2010-11-29 6 views
4

Je suis très nouveau dans le développement Android et je travaille sur une application où j'ai 4 activités. Chaque activité doit être capable de naviguer vers l'un des 3 autres. J'ai donc créé 4 boutons en haut de chaque activité qui permettent cela. Le code XML ressemble à ceci:Android Activity Navigation

<Button ... android:onClick="loadProfileLayout"/> 
<Button ... android:onClick="loadRulesLayout"/> 
<Button ... android:onClick="loadSettingsLayout"/> 
<Button ... android:onClick="loadHelpLayout"/> 

le manifeste a une étiquette d'activité pour chaque:

<activity android:name=".Profiler" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="Rules"></activity> 
    <activity android:name="Settings"></activity> 
    <activity android:name="Help"></activity> 

Et les fonctions appelées sont les suivantes:

public void loadProfileLayout()  { startActivity(new Intent(this, Profiler.class)); } 
public void loadRulesLayout(View v) { startActivity(new Intent(this, Rules.class)); } 
public void loadSettingsLayout(View v) { startActivity(new Intent(this, Settings.class)); } 
public void loadHelpLayout(View v) { startActivity(new Intent(this, Help.class)); } 

donc d'abord cela fonctionne. De l'activité principale "Profil" je suis capable de naviguer vers l'un des 3 autres. Et des 3 autres je peux naviguer n'importe où, mais revenir à la principale. Lorsque j'appuie sur le bouton d'activité principale, l'application se bloque. J'essaie et débogue, mais il ne semble même pas exécuter loadProfileLayout(). Eclipse ouvre un fichier "View.class" avec le contenu de "Source introuvable". Si j'appuie sur F8 pour continuer le débogage, il charge "ZygoteInit $ MethodAndArgsCaller.run()" ... de nouveau, "Source introuvable". Appuyez à nouveau sur F8 pour charger le message d'erreur dans l'émulateur "Désolé, l'application s'est arrêtée de manière inattendue.

Encore une fois, je suis nouveau sur Android et tout ce que je sais des activités est ce que j'ai lu sur le site Web du développement. Est-ce que je fais une erreur fondamentale ici, je ne suis pas au courant?

Merci,
Nate

+1

Je ne sais pas si cela vous cause du chagrin mais vous voudrez aussi changer les noms de vos balises . (période) avant eux. Par exemple, doit être . – SpencerElliott

Répondre

4

Je ne sais pas si cela était une faute de frappe dans votre question, mais loadProfileLayout() doit aussi prendre un View comme seul paramètre:

public void loadProfileLayout(View v) 

Modifier : Le paramètre View est la vue qui a provoqué l'événement onClick (dans votre cas, l'instance Button). Je n'ai pas regardé le code, mais je suppose que View utilise la réflexion pour trouver la méthode à appeler (en particulier celle qui prend une vue comme argument), et comme elle ne trouve pas de méthode correspondante, elle décide de lancer une exception.

+0

C'était le problème. Pouvez-vous donner un aperçu de cet argument? Qu'est-ce qui est passé qui est utilisé? J'ai inclus View v dans les autres parce que c'était comme cela qu'il a été montré sur le site de développement. Mais je n'utilise pas réellement l'objet v dans ma fonction. Quel est son but et pourquoi l'application plante-t-elle sans elle? – linsek

+0

Ajout d'un texte supplémentaire. J'espère que cela pourra aider! –

+0

C'est le cas. Merci pour votre aide, Erich. – linsek

Questions connexes