簡體   English   中英

使用Android接近傳感器時禁用OnClickListener

[英]OnClickListener disabled when using Android proximity sensor

我正在嘗試在已經正常運行的應用程序中創建一個接近傳感器。 我可以正常運行傳感器,但是當我這樣做時,它禁用了應用程序按鈕的OnClickListener,我真的不明白為什么。

這是我的MainActivity.class

public class MainActivity extends Activity implements OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button option1 = (Button) findViewById(R.id.option1);
        Button option2 = (Button) findViewById(R.id.option2);

        option1.setOnClickListener(this);
        option2.setOnClickListener(this);
   }

    @Override
    protected void onResume() {
        super.onResume();       
        Intent intent = new Intent();
        intent.setClass(getBaseContext(),ProximitySensor.class);
        startActivity(intent);      
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.option1:
                // Option1
               break;
            case R.id.option2:
                // Option1
                break;
            default:
                break;
        }

    }
}

這里的ProximitySensor.class工作正常

public class ProximitySensor extends Activity implements SensorEventListener{

    private SensorManager sm;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        sm= (SensorManager)getSystemService(Context.SENSOR_SERVICE);
    }

    @Override
    protected void onStart(){
        super.onStart();
        Sensor proximitySensor= sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
        if (proximitySensor == null){
            Toast.makeText(ProximitySensor.this,"No Proximity Sensor Found! ",Toast.LENGTH_LONG).show();
        }   
    }

    @Override
    protected void onResume() {
        super.onResume();
        sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_PROXIMITY),SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onStop() {
        super.onStop();
        sm.unregisterListener(this);
   }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType()==Sensor.TYPE_PROXIMITY){
            if(event.values[0] == 0){
               Toast.makeText(ProximitySensor.this,"You are close",Toast.LENGTH_LONG).show();
            }
        }
    }

}

我認為我可能是在打錯傳感器,有人可以幫我嗎?

非常感謝!

您需要像在主要活動中一樣在ProximitySensor活動中注冊onClick偵聽器。

您當前正在開始一個新活動,將其布局設置為與主要活動相同。 但是當您這樣做時,您在主要活動上設置的onClickListeners將不再起作用,因為它是一個新活動和新布局。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM