Android开发 - 在我的MainActivity中实现onClickListener
这可能更多的是关于类结构的问题,但我试图在下面的一段代码中添加一个简单的点击监听器。点击后,它会将“SENSOR_DELAY_FASTEST”值更改为“SENSOR_DELAY_NORMAL”。所以我可以即时切换。但由于我在MainActivity中,我无法实现onClickListener。任何人都可以告诉我如何处理这个问题?Android开发 - 在我的MainActivity中实现onClickListener
正如我所说。这可能就是我缺乏Java知识在这里阻碍我的。也许最好是设置另一个类来处理点击次数?
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private TextView xText, yText, zText;
private Sensor accelerometerSensor;
private SensorManager sensorManager;
@Override
public void onSensorChanged(SensorEvent event) {
// display the sensor values in the x,y and z text views
xText.setText("X: " + event.values[0]);
yText.setText("Y: " + event.values[1]);
zText.setText("Z: " + event.values[2]);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// create sensor manager
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
// create accelerometer sensor
accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
// register listener
sensorManager.registerListener(this, accelerometerSensor, SensorManager.SENSOR_DELAY_FASTEST);
// assign text views
xText = (TextView)findViewById(R.id.xText);
yText = (TextView)findViewById(R.id.yText);
zText = (TextView)findViewById(R.id.zText);
}
}
选项#1:
当然,你可以做你的MainActivity。你所要做的就是找到你想要听点击事件的UI元素。例如,如果你的UI元素是一个简单的Button
,你可以做到以下几点:
// find button with id "myButtonId" in the XML layout
Button b = (Button) findViewById(R.id.myButtonId);
// set a listener on that button
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // gets called when clicked
// button has been clicked,
// your code here
}
});
选项#2:
但你也可以定义你的XML布局,你的方法点击按钮后将调用onClick_Button()
。
内,您的XML布局:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/myButtonId"
android:text="Click Me"
android:onClick="onClick_Button">
</Button>
内,您的MainActivity:
public void onClick_Button(View v) {
// your code here
}
有时当android studio没有发现某些类在安装时遇到问题或者资源所在的路径时。
如果你确定它安装好,试图直接anonymoue实现接口,例如:
... setOnclickListener(新ClickListener(视图v){ ... //更多代码在这里 }
)
butif你实现你的活动不得编译接口,因为你要实现该接口的方法,检查,如果不工作,请给我更多的信息
谢谢。但问题不在于安装,因为我已经尝试了这一点。我的问题更多的是缺乏对实施的理解。 – ayala
在Java中,一个类只能从一个类派生的,但可以有多个接口。
按我可以解释,你在实施 OnclickListener接口面临的问题,因为你认为你已经 实施SensorEventListener。
您可以通过用逗号分隔来轻松实现多个接口。例如:
public class MainActivity extends AppCompatActivity implements SensorEventListener, View.OnClickListener {
private Button button;
private TextView xText, yText, zText;
private Sensor accelerometerSensor;
private SensorManager sensorManager;
@Override
public void onSensorChanged(SensorEvent event) {
// display the sensor values in the x,y and z text views
xText.setText("X: " + event.values[0]);
yText.setText("Y: " + event.values[1]);
zText.setText("Z: " + event.values[2]);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// create sensor manager
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
// create accelerometer sensor
accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
// register listener
sensorManager.registerListener(this, accelerometerSensor, SensorManager.SENSOR_DELAY_FASTEST);
// assign text views
xText = (TextView)findViewById(R.id.xText);
yText = (TextView)findViewById(R.id.yText);
zText = (TextView)findViewById(R.id.zText);
//Declare button in activity_main.xml
button=(Button)findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v){
changeSensorDelay();
}
public void changeSensorDelay(){
//Your own implementation
}
}
啊。我明白了,这对我来说更有意义。感谢您的时间。 – ayala
谢谢你的时间。我现在可以清楚地看到它背后的逻辑。 – ayala