【问题标题】:The constructor GPS(MainActivity) is undefined构造函数 GPS(MainActivity) 未定义
【发布时间】:2014-03-24 05:47:39
【问题描述】:

我在构建一个类来处理 LocationManager 接口 (GPS) 后收到此错误 The constructor GPS(MainActivity) is undefined

...我完全空白,我不知道该说什么。我对java、类和接口没有太多经验。

代码贴在下面。

MainActivity.java

package com.bz.example;

import android.app.Activity;
import android.os.Bundle;

import com.bz.example.libs.GPS;
import com.bz.example.libs.GPSpos;

public class MainActivity extends Activity implements GPSpos {

    private GPS gps;

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

        gps = new GPS(MainActivity.this);
    }

    public void locationChanged(double longitude, double latitude) {
    }

    @Override
    public void displayGPSSettingsDialog() {
    }
}

GPSpos.java

package com.bz.example.libs;

public interface GPSpos {
    public void locationChanged(double longitude, double latitude);
    public void displayGPSSettingsDialog();
}

GPS.java

package com.bz.example.libs;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

public class GPS {

    private GPSpos main;

    // Helper for GPS-Position
    private LocationListener locationListener;
    private LocationManager locationManager;

    private boolean isRunning;

    public void GPS(GPSpos main)
    {
        this.main = main;

        locationManager = (LocationManager) ((Activity) this.main).getSystemService(Context.LOCATION_SERVICE);
        locationListener = new locationListener();
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, locationListener);
    }

   public void stopGPS() {
        if(isRunning) {
            locationManager.removeUpdates(locationListener);
            this.isRunning = false;
        }
    }

    public void resumeGPS() {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, locationListener);
        this.isRunning = true;
    }

    public boolean isRunning() {
        return this.isRunning;
    }

    public class locationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location loc) {
            GPS.this.main.locationChanged(loc.getLongitude(), loc.getLatitude());
        }

        @Override
        public void onProviderDisabled(String provider) {
            GPS.this.main.displayGPSSettingsDialog();
        }

        @Override
        public void onProviderEnabled(String provider) {}

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}

    }
}

【问题讨论】:

  • 也许将 MainActivity 转换为 GPSPos: gps = new GPS((GPSPos) MainActivity.this);?
  • @jlhonora 我收到此错误Multiple markers at this line - The constructor GPS(GPSPos) is undefined - GPSPos cannot be resolved to a typegps = new GPS((GPSPos) MainActivity.this);

标签: java android class interface


【解决方案1】:

删除void:

 public void GPS(GPSpos main)
        ^^^^ - constructors in java dont have return type

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多