Android 使用GoogleAppClient时没有此类方法错误

Android 使用GoogleAppClient时没有此类方法错误,android,google-maps-api-3,Android,Google Maps Api 3,当我使用此代码运行我的应用程序时 mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addConnectionCallbacks(this) .addApi

当我使用此代码运行我的应用程序时

 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)
java.lang.NoSuchMethodError:没有直接方法(Landroid/content/Context;Landroid/os/Looper;ILcom/google/android/gms/common/internal/zzg;Lcom/google/android/gms/api/GoogleApiClient$ConnectionCallbacks;Lcom/google/android/gms/common/api/GoogleApiClient$OnConnectionFailedListener;)V类Lcom/google/android/gms/gms/common/internal/zzk;或者它的超类(声明'com.google.android.gms.common.internal.zzk'出现在/data/app/vivid.myapplication-2/base.apk:classes11.dex中)
当我查看其他答案时,他们要求我们删除
build()
方法并实现
GoogleAppClient.OnConnectionFailedListener,GoogleAppClient.ConnectionCallbacks
回调


但这并没有解决我的错误

由于您已经在使用enableAutoManagement,连接回调将得到处理(除非您希望覆盖它们并执行特定的操作)。你也可以

  • 跳过生成器中的addConnectionCallbacks(此)(推荐)
  • 或者通过实现ConnectionCallbacks接口方法来定义“this”
请注意,如您在上面的问题中所述,“删除build()方法”是没有用的

您可以使用以下代码(通过第二种情况实现接口):

还记得使用版本(编写本文时为10.2.4),以便找到相关方法

在build.gradle文件中,如果尚未更新,请更新:


编译“com.google.android.gms:play services places:10.2.4”

您使用了哪种方法?您使用的play services版本似乎不是最新版本,因此无法找到OnConnectionFailedListener的特定重写方法。最新版本是10.2.4,我已经更新了答案。
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) {

}
}