java - 使用 Google Cloud Messaging 时无法解析方法 addOnCompleteListener
问题描述
我尝试使用 Firebase Cloud Messaging,但遇到了一些问题。我为订阅主题编写了代码,但是当我在 addOnCompleteListener 中使用时,我收到了这个错误:
无法解析方法“addOnCompleteListener(live.jtube.app.MassegeNetsActivity,匿名 com.google.android.gms.tasks.OnCompleteListener)”
这是我的代码的一部分:
MassegeNetsActivity.java 代码:
.....
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.messaging.FirebaseMessaging;
import android.content.BroadcastReceiver;
import android.content.IntentFilter;
.....
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.massege_nets);
FirebaseMessaging.getInstance().subscribeToTopic("weather")
.addOnCompleteListener(MassegeNetsActivity.this, new OnCompleteListener<Void>() { //here i got the error
@Override
public void onComplete(@NonNull Task<Void> task) {
String msg = "תהליך הרשמה לערוץ בוצע בהצלחה!";
if (!task.isSuccessful()) {
msg = "אופס! תהליך הרישום לערוץ נכשל, אנא בדוק את החיבור שלך לאינטרנט";
}
// Log.d(TAG, msg);
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}
});
......
这里是 build.gradle 文件:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 28
buildToolsVersion "28.0.2"
defaultConfig {
applicationId "app.app.app"
minSdkVersion 15
targetSdkVersion 28
versionCode 34
versionName "4.17"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support.constraint:constraint-layout:1.1.3'
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
//firebase
//firebase analytics
// compile 'com.google.firebase:firebase-messaging:12.0.1'//firebase Cloud Messaging
compile 'com.android.support:appcompat-v7:28.0.0'
compile 'com.android.support:design:28.0.0'
compile 'com.android.support:support-vector-drawable:28.0.0'
compile 'com.google.firebase:firebase-core:16.0.1'
compile 'com.google.firebase:firebase-messaging:12.0.1'
compile 'com.google.firebase:firebase-ads:12.0.1'
compile 'com.google.firebase:firebase-analytics:15.0.0'
compile 'com.google.firebase:firebase-auth:15.0.0'
//implementation 'com.google.firebase:firebase-analytics:12.0.1'
compile 'com.android.support:support-v4:28.0.0'
compile "com.android.support:support-compat:28.0.0"
compile 'com.android.support:support-media-compat:28.0.0'
testCompile 'junit:junit:4.12'
}
我在谷歌上搜索了将近 3 个小时,但找不到任何可行的答案...
你能帮助我吗?
非常感谢!
解决方案
您在评论中链接的示例仅传入一个,而您的代码在此之前OnCompleteListener
传入一个附加参数。MassegeNetsActivity.this
虽然有 aaddOnCompleteListener
接受两个参数,但在该重载中,第一个参数是 an Executor
,并且似乎Activity
实例不是有效Executor
对象。
addOnCompleteListener
解决方案是只用监听器调用:
FirebaseMessaging.getInstance().subscribeToTopic("weather")
.addOnCompleteListener(new OnCompleteListener<Void>() {
...
推荐阅读
- php - 如何在 Windows 上的 PHP 7.3 中安装 BCMath
- android - 使用 Kotlin 尝试迭代 ChipGroup 的 Android Espresso 测试
- swift - TableView 单元格在 UITableViewController 中的 headerview 上滚动
- linux - x86_64 平台上的 Diolan DLN-2 SPI 控制器
- bash - 为 bash exec 命令创建别名
- javascript - 如何使用 PHP 正确回显 Notify.js 通知?
- javascript - 为什么从未定义的承诺返回字符串?
- go - 在 protobuf 文件中使用 google.protobuf.Value 并在结构中使用 go interface{} 字段,反之亦然
- matlab - 将一个图形叠加到另一个图形上(两个不同的颜色图)
- jquery - 在自闭合元素上调用 text() 后节点丢失