2013-03-07 2 views
0

Привет, У меня возникли проблемы с определением findViewById в моей функции. Ниже моя функция:FindViewById не определено?

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

Я получаю сообщение об ошибке, что говорит: Метод findViewById (ИНТ) не определена для типа StepDisplayer, и я уверен, что это происходит потому, что мой класс не распространяется типа активности. Однако, как бы исправить это? Класс реализует вместо этого:

public class StepDisplayer implements StepListener, SpeakingTimer.Listener 

Я не могу расширить деятельность, как я знаю, Java распространяется только один класс или может реализовать более одного интерфейса. Может кто-нибудь знает, как это исправить? Если бы это было здорово! Благодаря!

+0

при создании экземпляра 'StepDisplayer' вы можете передать ссылку на' CurrentActivity' к этому классу. Предположим, что вы создаете экземпляр класса 'Activity'. –

+0

передайте контекст StepDisplayer из вашего класса активности и используйте его в StepDisplayer. – Raghunandan

ответ

2

В Java ваш класс может расширить один класс и реализовать несколько интерфейсов. Так как ваш класс StepDisplayer реализует только интерфейсы StepListener и SpeakingTimer.Listener, вы можете расширить его класс Activity.

Например:

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener 

В случае, если вы не можете сделать это для каких причин, вы можете передать Context из класса активности, которая звонит указанный метод в StepDisplayer и использовать его для вызова метод findViewById.

yourMethodInStepDisplayerClass(IAmCallingStepDisplayerActivity.this); 
+0

Итак, вы можете реализовать и расширить класс? Не могли бы вы привести пример? – user200081

1

findViewById() метод доступен в Activity классе. Поэтому, если ваш класс не расширяет Activity, вы должны передать контекст активности в класс, в который вы хотите позвонить findViewById(). А потом просто позвонить

context.findViewById(int id) ; 

:-)

1

Изменения в

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener