You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Java代码Listener顺序引发方法无法解析问题求助

问题

在Android Studio的Java代码中编写了两个版本的submitLeaderboardScore方法,仅调换了submitScore调用后addOnFailureListener与addOnSuccessListener的顺序。但无论哪个Listener放在前面,都会出现对应的方法无法解析错误(如“Cannot resolve method 'addOnFailureListener(OnFailureListener)'”或“Cannot resolve method 'addOnSuccessListener(OnSuccessListener)'”),排在后面的Listener则无异常。

代码示例

// 版本1:addOnFailureListener在前
public void submitLeaderboardScore(long score) {
    leaderboardsClient = Games.getLeaderboardsClient(getApplicationContext(), Objects.requireNonNull(GoogleSignIn.getLastSignedInAccount(getApplicationContext())));

    leaderboardsClient.submitScore(getString(R.string.leaderboard_id), score)
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    // 处理提交失败逻辑
                }
            })
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    // 提交成功逻辑
                }
            });
}

// 版本2:addOnSuccessListener在前
public void submitLeaderboardScore(long score) {
    leaderboardsClient = Games.getLeaderboardsClient(getApplicationContext(), Objects.requireNonNull(GoogleSignIn.getLastSignedInAccount(getApplicationContext())));

    leaderboardsClient.submitScore(getString(R.string.leaderboard_id), score)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    // 提交成功逻辑
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    // 处理提交失败逻辑
                }
            });
}

错误现象

两种版本均出现同一规律:第一个调用的Listener方法报“无法解析”错误,第二个Listener方法无异常。

问题原因与解决办法
  • 核心原因:
    Google Play Games Services的submitScore方法返回的是com.google.android.gms.tasks.Task<Void>,但你使用的OnSuccessListener或OnFailureListener可能导入了错误的包,导致方法签名不匹配。比如误导入Android原生的Listener包,而非Google Play Services提供的对应Listener,IDE就无法解析对应的链式调用方法。

  • 解决步骤:

    1. 修正Listener的导入包:确保OnSuccessListener和OnFailureListener都来自com.google.android.gms.tasks包,替换错误的导入语句:
      import com.google.android.gms.tasks.OnFailureListener;
      import com.google.android.gms.tasks.OnSuccessListener;
      
    2. 确认Task类型:检查submitScore返回的对象类型是com.google.android.gms.tasks.Task,而非其他类型(如Android原生AsyncTask)。
    3. 清理缓存重建项目:执行Android Studio的File > Invalidate Caches / Restart操作,清除IDE缓存后重新编译项目,避免缓存导致的错误提示。
    4. 检查依赖版本:确保项目中Play Games Services依赖版本兼容且为最新,比如在Module级build.gradle中配置:
      implementation "com.google.android.gms:play-services-games:23.1.0"
      

内容的提问来源于stack exchange,提问作者ruser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 11:02:49