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就无法解析对应的链式调用方法。解决步骤:
- 修正Listener的导入包:确保
OnSuccessListener和OnFailureListener都来自com.google.android.gms.tasks包,替换错误的导入语句:import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; - 确认Task类型:检查
submitScore返回的对象类型是com.google.android.gms.tasks.Task,而非其他类型(如Android原生AsyncTask)。 - 清理缓存重建项目:执行Android Studio的
File > Invalidate Caches / Restart操作,清除IDE缓存后重新编译项目,避免缓存导致的错误提示。 - 检查依赖版本:确保项目中Play Games Services依赖版本兼容且为最新,比如在Module级
build.gradle中配置:implementation "com.google.android.gms:play-services-games:23.1.0"
- 修正Listener的导入包:确保
内容的提问来源于stack exchange,提问作者ruser
相关产品推荐
相关产品推荐

