2013-03-07 114 views
0

嗨我无法在我的函数中定义findViewById。下面是我的函数:FindViewById未定义?

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

我得到一个错误,指出:是未定义类型StepDisplayer的方法findViewById(int)和我敢肯定那是因为我的课没有扩展类型的活动。但是,我会如何纠正这一点?这个类代替了这个:

public class StepDisplayer implements StepListener, SpeakingTimer.Listener 

我无法扩展活动,据我所知Java只扩展一个类或可以实现多个接口。可能有人知道如何解决这个问题?如果这样会很棒!谢谢!

+0

了'StepDisplayer'可以通过参考'CurrentActivity'此类。假设你正在从一个Activity类创建实例。 – 2013-03-07 07:49:22

+0

将上下文从你的活动类传递给StepDisplayer,并在StepDisplayer中使用它。 – Raghunandan 2013-03-07 07:50:35

回答

2

在Java中,您的类可以扩展单个类并实现多个接口。由于你的类StepDisplayer只实现了StepListenerSpeakingTimer.Listener接口,所以你可以使它扩展Activity类。

如:

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener 

如果你不能做到这一点对任何原因,你可以通过从活动类,这是调用StepDisplayer上述方法Context,并用它来打电话findViewById方法。

yourMethodInStepDisplayerClass(IAmCallingStepDisplayerActivity.this); 
+0

那么你可以实现AND扩展一个类?你介意给这个例子吗? – user200081 2013-03-07 07:51:52

1

findViewById()方法可在Activity类。所以如果你的班级没有扩展Activity,你应该把活动上下文传递给你想要调用findViewById()的班级。当您创建的实例,然后只需拨打

context.findViewById(int id) ; 

:-)

1

更改为

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener 
相关问题