【问题标题】:Method does not override method from its super class & cannot resolve symbol方法不会覆盖其超类中的方法并且无法解析符号
【发布时间】:2020-01-25 17:38:59
【问题描述】:

在 Override 中,我收到“方法不会覆盖其超类中的方法”错误。我还在 super.onResume () 中得到“onResume 无法解析方法”错误;

它在 MainActivity 上工作,但是当我将代码移动到服务类时,我收到了这个错误。

As you can see:

public class Servis extends Service implements SensorEventListener{

    SensorManager mgr;
    Sensor temp;
    TextView text;
    StringBuilder msg = new StringBuilder(2048);
    MediaPlayer mediaPlayer;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mediaPlayer = MediaPlayer.create(Servis.this, R.raw.warning);
        mgr = (SensorManager) this.getSystemService(SENSOR_SERVICE);
        temp = mgr.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE); }

    @Override
    protected void onResume() {
        mgr.registerListener(this, temp, SensorManager.SENSOR_DELAY_NORMAL);
        super.onResume();
    }

    @Override
    protected void onPause() {
        mgr.unregisterListener(this, temp);
        super.onPause();
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }

        public void onSensorChanged(SensorEvent event) {
            float fahrenheit = event.values[0] * 9 / 5 + 32;
            if(fahrenheit < 68)
                mediaPlayer.start();
    }
}

【问题讨论】:

  • MainActivity 类继承自 Activity(或 AppCompatActivity),它有一个 onResume 方法可以覆盖。在这里,您似乎是从没有 onResume 方法的 Service 扩展而来的:developer.android.com/reference/android/app/Service.html
  • @tlong314 SensorEventListener 不是Service

标签: java android overriding


【解决方案1】:

Service 不是Activity,这就是这些方法不能被覆盖的原因。您可以安全地删除它们,而必须让Activity 实现它们。当Service implements SensorEventListener 时,它看起来像这样:

public class Servis extends Service implements SensorEventListener {

    @Override
    public void onCreate() {

    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

    }
    @Override
    public void onDestroy() {

    }
    @Override
    public IBinder onBind(Intent intent) {

    }


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

    }    
    @Override
    public void onSensorChanged(SensorEvent event) {

    }
}

【讨论】:

    【解决方案2】:

    如上所述,Services 类不包含您的方法,因此无需执行覆盖。参考Service documentation

    您可能希望将其覆盖的 closes 方法

    onStart(Intent intent, int startId)
    

    这可能是最接近 OnResume 的方法

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      相关资源
      最近更新 更多