Android 开发 - 在我的 MainActivity 中实现 onClickListener
Android development - Implementing onClickListener in my MainActivity
这可能更多是关于 class 结构的问题,但我正在尝试向以下代码添加一个简单的点击监听器。单击后,它会将 "SENSOR_DELAY_FASTEST" 值更改为 "SENSOR_DELAY_NORMAL"。所以我可以即时切换。但是因为我在 MainActivity 中,所以我无法实现 onClickListener。谁能给我任何关于如何处理这个问题的指示?
正如我所说。可能只是我缺乏 Java 知识阻碍了我。也许最好设置另一个 class 来处理点击?
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);
}
}
有时 android studio 没有发现一些 类 它在安装或资源所在路径中的应有问题。
如果你确定它安装好了,尝试直接匿名实现接口例如:
...setOnclickListener( new ClickListener( 查看 v)
{
...//更多代码在这里
}
)
但是如果你在你的activity中实现接口一定不能编译,因为你必须实现那个接口的方法,检查如果不工作,请给我更多信息
选项#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
}
在Java中,单个class只能从一个class派生,但可以有多个接口。
As per as I can interpret, you are facing problem in implementing
OnclickListener interface as you think that you have already
implemented 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
}
}
这可能更多是关于 class 结构的问题,但我正在尝试向以下代码添加一个简单的点击监听器。单击后,它会将 "SENSOR_DELAY_FASTEST" 值更改为 "SENSOR_DELAY_NORMAL"。所以我可以即时切换。但是因为我在 MainActivity 中,所以我无法实现 onClickListener。谁能给我任何关于如何处理这个问题的指示?
正如我所说。可能只是我缺乏 Java 知识阻碍了我。也许最好设置另一个 class 来处理点击?
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);
}
}
有时 android studio 没有发现一些 类 它在安装或资源所在路径中的应有问题。
如果你确定它安装好了,尝试直接匿名实现接口例如:
...setOnclickListener( new ClickListener( 查看 v) { ...//更多代码在这里 }
)
但是如果你在你的activity中实现接口一定不能编译,因为你必须实现那个接口的方法,检查如果不工作,请给我更多信息
选项#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
}
在Java中,单个class只能从一个class派生,但可以有多个接口。
As per as I can interpret, you are facing problem in implementing OnclickListener interface as you think that you have already implemented 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
}
}