0

次のコードを使用して、SensorEventListener を登録および登録解除しています。

 //Get the Toggle Button
         final ToggleButton tb=(ToggleButton) findViewById(R.id.activate);
         //Listener for ToggleButton
         tb.setOnClickListener(new View.OnClickListener() {


             public void onClick(View arg0) {
                 if(tb.isChecked()){
                    //Register the sensor
                     //smanager.
                     smanager.registerListener(this, smanager.getDefaultSensor.TYPE_LINEAR_ACCELERATION,SensorManager.SENSOR_DELAY_NORMAL);
                     Log.v(classname, "Sensor Listener Unregistered");
                 }
                 else{
                      //deRegister the Sensor
                     // Unregister the listener
                     smanager.unregisterListener(this);
                     Log.v(classname, "Sensor Listener Unregistered");

                 }
             }
         });


しかし、次のエラーが発生します。

The method registerListener(SensorListener, Sensor, int) is not applicable for the arguments new View.onClickListener(),{},Sensor,int

onPause()アクティビティのメソッドで同じコードを記述しても、このエラーは発生しません。何が問題で、これを修正する方法は?

4

1 に答える 1

6

thisOnClickListenerは、あなたの代わりに を指しますActivity

これを次のように変更します。

smanager.registerListener(YourActivityClass.this, smanager.getDefaultSensor.TYPE_LINEAR_ACCELERATION, SensorManager.SENSOR_DELAY_NORMAL);

contextあなたのコメントに答えるために編集してください:

registerListener()が必要SensorListenerです。あなたによると

onResume() で動作します

コメント、私はあなたがインターフェースをActivity実装していると思いました。SensorListenerコンテキスト自体はそれを実装していないため、同じエラーが発生します。

于 2012-10-13T14:21:12.010 に答える