gpt4 book ai didi

java - 如何从匿名类中调用方法

转载 作者:行者123 更新时间:2023-11-30 10:31:46 25 4
gpt4 key购买 nike

我有这个类可以检测手机何时面朝上,何时面朝下,并在屏幕上打印正面朝上或正面朝下!!

package com.example.kyriakos.androiddetectflipping;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
import java.util.List;

public class Test extends Activity {

SensorManager sensorManager;
Sensor accelerometerSensor;
boolean accelerometerPresent;

TextView face;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_detect_flipping);

face = (TextView)findViewById(R.id.face);

sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
if(sensorList.size() > 0){
accelerometerPresent = true;
accelerometerSensor = sensorList.get(0);
}
else{
accelerometerPresent = false;
face.setText("No accelerometer present!");
}
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if(accelerometerPresent){
sensorManager.registerListener(accelerometerListener, accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
}

@Override
protected void onStop() {

super.onStop();
if(accelerometerPresent){
sensorManager.unregisterListener(accelerometerListener);
}
}

public SensorEventListener accelerometerListener = new SensorEventListener(){

@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {

}

@Override
public void onSensorChanged(SensorEvent arg0) {

float z_value = arg0.values[2];
if (z_value >= 0){
face.setText("Face UP");
}
else{
face.setText("Face DOWN");
}
}};


}

现在我想打印来自另一个类的消息

package com.example.kyriakos.androiddetectflipping;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class Flip extends AppCompatActivity{


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

}}

它认为 onSensorChanged 方法负责打印消息,所以我尝试像这样在类 Flip 中调用 onSensorChanged 方法

    SensorEventListener ob = new SensorEventListener();
ob.onSensorChanged;

但它是错误的,因为 SensorEventListener 是一个匿名内部类!所以我的问题是我如何调用这个方法?我阅读了如何从匿名内部类调用方法,但我不太理解。对不起,如果我的问题很愚蠢,但我是 java、android 的新手,我正在努力学习

最佳答案

您没有将匿名类分配给 ob,而是将其基类分配给了它。如果您想访问它并使用它的重载方法,您必须这样做:

Test test = new Test();
SensorEventListener ob = test.accelerometerListener;

然后你可以调用你重写的方法。

关于java - 如何从匿名类中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com