首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用GoogleApiClient时没有此类方法错误

使用GoogleApiClient时没有此类方法错误
EN

Stack Overflow用户
提问于 2017-05-08 20:11:19
回答 1查看 218关注 0票数 0

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

代码语言:javascript
运行
复制
 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()方法上收到一个错误,因为

代码语言:javascript
运行
复制
 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回调!

但这不能解决我的错误吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-08 20:37:26

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

生成器(recommended)

  • Or中的
  • skip addConnectionCallbacks(this)通过实现ConnectionCallbacks接口方法来定义'this‘。

请注意,正如您在上面的问题中所述,“删除build()方法”是没有用的。

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

代码语言:javascript
运行
复制
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“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43847359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档