0

嗨,我在函数中定义 findViewById 时遇到问题。以下是我的功能:

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

我收到一条错误消息:类型 StepDisplayer 的方法 findViewById(int) 未定义,我很确定这是因为我的类没有扩展类型 Activity。但是,我该如何纠正呢?该类实现了这个:

public class StepDisplayer implements StepListener, SpeakingTimer.Listener

我无法扩展活动,因为我知道 Java 只扩展了一个类或可以实现多个接口。可能有人知道如何解决这个问题吗?如果是这样那就太好了!谢谢!

4

3 回答 3

2

在 Java 中,您的类可以扩展单个类并实现多个接口。由于您的类StepDisplayer仅实现StepListenerSpeakingTimer.Listener接口,因此您可以使其扩展Activity该类。

例如:

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener

如果由于任何原因您无法做到这一点,您可以Context从调用 StepDisplayer 中所述方法的 Activity 类中传递并使用它来调用该findViewById方法。

yourMethodInStepDisplayerClass(IAmCallingStepDisplayerActivity.this);
于 2013-03-07T07:50:44.950 回答
1

findViewById()方法在Activity课堂上可用。因此,如果您的类没有扩展 Activity,您应该将 Activity 上下文传递给您要调用的类findViewById()。然后只需调用

context.findViewById(int id) ;

:-)

于 2013-03-07T08:00:08.377 回答
1

改成

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener
于 2013-03-07T08:26:31.080 回答