0

こんにちは、関数で findViewById を定義するのに問題があります。以下は私の機能です:

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

次のようなエラーが表示されます: メソッド findViewById(int) はタイプ StepDisplayer に対して定義されていません。これは、私のクラスがタイプ Activity を拡張していないためだと確信しています。しかし、どうすればこれを修正できますか?クラスは代わりにこれを実装します:

public class StepDisplayer implements StepListener, SpeakingTimer.Listener

Java が 1 つのクラスしか拡張しないか、複数のインターフェースを実装できることがわかっているため、アクティビティを拡張できません。これを修正する方法を知っている人はいますか?もしそうなら、それは素晴らしいことです!ありがとう!

4

3 に答える 3

2

Java では、クラスは単一のクラスを拡張し、複数のインターフェースを実装できます。クラスStepDisplayerは実装StepListenerSpeakingTimer.Listenerインターフェースのみであるため、クラスを拡張することができますActivity

例えば:

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener

なんらかの理由でそれができない場合はContext、上記のメソッドを呼び出している Activity クラスから StepDisplayer を渡し、それを使用してメソッドを呼び出すことができますfindViewById

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

findViewById()メソッドは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 に答える