当我使用以下代码运行我的应用程序时
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */,
this /* OnConnectionFailedListener */)
.addConnectionCallbacks(this)
.addApi(LocationServices.API)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.build();
mGoogleApiClient.connect();我在build()方法上收到一个错误,因为
java.lang.NoSuchMethodError: No direct method <init>(Landroid/content/Context;Landroid/os/Looper;ILcom/google/android/gms/common/internal/zzg;Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;Lcom/google/android/gms/common/api/GoogleApiClient$OnConnectionFailedListener;)V in class Lcom/google/android/gms/common/internal/zzk; or its super classes (declaration of 'com.google.android.gms.common.internal.zzk' appears in /data/app/vivid.myapplication-2/base.apk:classes11.dex)当我查看其他答案时,他们要求我们删除build()方法并实现GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks回调!
但这不能解决我的错误吗?
发布于 2017-05-08 20:37:26
由于您已经在使用enableAutoManagement,因此将处理连接回调(除非您希望覆盖它们并执行特定的操作)。您可以选择
生成器(recommended)
请注意,正如您在上面的问题中所述,“删除build()方法”是没有用的。
您可以使用以下代码(用于通过第二种情况实现接口):
public class TestActivity extends FragmentActivity implements GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks {
private GoogleApiClient mGoogleApiClient;
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */,
this /* OnConnectionFailedListener */)
.addConnectionCallbacks(this)
.addApi(LocationServices.API)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.build();
}
@Override
public void onStart() {
super.onStart();
if (null != mGoogleApiClient) {
mGoogleApiClient.connect();
}
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@Override
public void onConnected(@Nullable Bundle bundle) {
}
@Override
public void onConnectionSuspended(int i) {
}
}还要记住使用latest google-play-services版本(在编写本文时为10.2.4),以便找到相关的方法。
在build.gradle文件中,进行更新(如果尚未更新):
编译"com.google.android.gms:play-services-places:10.2.4“
https://stackoverflow.com/questions/43847359
复制相似问题