我正在尝试开发一个小应用程序以使用 Google Play 服务获取位置信息。问题是,我一直遇到这个错误,我不知道为什么。
代码如下:
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
//import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
public class Principal extends AppCompatActivity implements ConnectionCallbacks, OnConnectionFailedListener {
private GoogleApiClient mGoogleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
gps = new MockLocationProvider(LocationManager.GPS_PROVIDER, Principal.this);
net = new MockLocationProvider(LocationManager.NETWORK_PROVIDER, Principal.this);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
}
}
错误是:
Error:(74, 8) error: Principal is not abstract and does not override abstract method onConnectionSuspended(int) in ConnectionCallbacks
如果我没有实现ConnectionCallbacks
、OnConnectionFailedListener
,我会遇到这个错误:
Error:(116, 41) error: incompatible types: Principal cannot be converted to ConnectionCallbacks
如果我删除这个选项:
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
并且未实现 ConnectionCallbacks
、OnConnectionFailedListener
,我没有错误,但未连接 GooglePlay 服务
。
我在 Gradle 上有这个:
compile 'com.google.android.gms:play-services-location:7.3.0'
我做错了什么?
谢谢大家。
最佳答案
您得到的直接错误是由于您的类 Principal
被声明为实现 ConnectionCallbacks
接口(interface)而没有实现该接口(interface)中定义的所有方法。来自Javadoc for ConnectionCallbacks我们可以看到这个接口(interface)包括两个方法:
abstract void onConnected(Bundle connectionHint)
abstract void onConnectionSuspended(int cause)
您需要为它们提供实现,之后您的第一个错误应该会消失。修复此问题后,您的代码中可能会出现其他问题。
关于java - Android Studio 不是抽象的,也不会覆盖抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38386429/