2013-03-07 36 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 
相關問題