2013-03-07 2 views
0

Bonjour J'ai du mal à trouver findViewById dans ma fonction. Ci-dessous est ma fonction:FindViewById n'est pas défini?

if(test.mStartedWalking == false){ 
     TextView myText = (TextView) findViewById (R.id.myText); 
     myText.append (lsNow + '\n'); 
     test.mStartedWalking = true; 
} 

Je reçois une erreur qui dit: La méthode findViewById (int) est non défini pour le StepDisplayer type et je suis sûr qu'il est parce que ma classe ne couvre pas une activité de type. Cependant, comment pourrais-je corriger cela? La classe implémente cette place:

public class StepDisplayer implements StepListener, SpeakingTimer.Listener 

Je suis incapable d'étendre une activité que je sais Java étend une seule classe ou peut mettre en œuvre plus d'une interface. Est-ce que quelqu'un pourrait savoir comment résoudre ce problème? Si c'est le cas, ce serait génial! Merci!

+0

lorsque vous créez l'instance de la 'StepDisplayer' vous pouvez passer la référence à la' CurrentActivity' à cette classe. .. En supposant que vous créez l'instance à partir d'une classe 'Activity'. –

+0

passez le contexte à StepDisplayer de votre classe d'activité et utilisez-le dans StepDisplayer. – Raghunandan

Répondre

2

En Java, votre classe peut étendre une seule classe et implémenter plusieurs interfaces. Puisque votre classe StepDisplayer implémente uniquement les interfaces StepListener et SpeakingTimer.Listener, vous pouvez lui faire étendre la classe Activity.

Par exemple:

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener 

Dans le cas où vous ne pouvez pas le faire pour que ce soit des raisons, vous pouvez passer la Context de la classe d'activité qui appelle cette méthode StepDisplayer et l'utiliser pour appeler la méthode findViewById.

méthode
yourMethodInStepDisplayerClass(IAmCallingStepDisplayerActivity.this); 
+0

Vous pouvez donc implémenter ET étendre une classe? Est-ce que ça te dérange de donner un exemple? – user200081

1

findViewById() est disponible dans Activity classe. Donc, si votre classe ne prolonge pas l'activité, vous devez passer le contexte d'activité à la classe où vous voulez appeler findViewById(). Et puis il suffit d'appeler

context.findViewById(int id) ; 

:-)

1

Modification

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener