2013-04-10 1 views
1

У меня есть приложение, в котором я хочу, чтобы запустить перехватчик для акселерометра при нажатии кнопки, поэтому я попытался так:Как зарегистрировать прослушиватель датчиков внутри метода onClick на кнопке?

private SensorManager sensorManager; 

@Override 
public void onCreate (Bundle savedInstanceState){ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.storing_act); 

    Button start = (Button)findViewById(R.id.startl); 

    start.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); 
      sensorManager.registerListener(this, 
        sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
        SensorManager.SENSOR_DELAY_NORMAL); 
     } 
    }); 

но появляется сообщение с

«The метод registerListener (SensorEventListener, датчик, целый) в типе SensorManager не применяется для аргументов (новый View.OnClickListener() {}, датчик, целый)»

есть ли способ решить эту проблему легко? Должен ли я переопределить любой другой метод? Благодаря

+3

вместо этого вы должны пройти YouActivityName.this –

+0

Вы пытаетесь зарегистрировать 'View' слушателя к менеджеру датчика, который ожидает [SensorEventListener] (http://developer.android.com/reference/android /hardware/SensorEventListener.html), как сообщает ошибка. – adrianp

+0

Спасибо, теперь он отлично работает – Burakito

ответ

2

Вы должны использовать MyActivity.this потому что this относится к OnClickListener и метод registerListener ожидает SensorEventListener.

public class MyActivity extends Activity implements SensorEventListener { 
    @Override 
    public void onCreate (Bundle savedInstanceState){ 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.storing_act); 

     Button start = (Button)findViewById(R.id.startl); 

     start.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); 
       sensorManager.registerListener(MyActivity.this, 
         sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
         SensorManager.SENSOR_DELAY_NORMAL); 
      } 
     }); 
}