【发布时间】: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 type和gps = new GPS((GPSPos) MainActivity.this);
标签: java android class interface