【发布时间】:2018-04-19 12:04:31
【问题描述】:
我在构建应用时遇到了无法解决的问题,我需要一些帮助。
我有一个简单的类 MainActivity.java 这是一个非常基本的应用程序,用于测试通过 FCB 接收推送消息。 我现在也在尝试为第三方实现一个 SDK,以发送和接收推送,这就是我卡住的地方。
这是我班级的代码:
package com.emarsys.tcspushtestapp;
import android.app.Application;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.emarsys.mobileengage.MobileEngage;
import com.emarsys.mobileengage.config.MobileEngageConfig;
import com.google.firebase.iid.FirebaseInstanceId;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnShowToken = (Button)findViewById(R.id.button_show_token);
btnShowToken.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Get the token
String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Token: + " + token);
Toast.makeText(MainActivity.this, token, Toast.LENGTH_SHORT).show();
}
});
MobileEngageConfig config = new MobileEngageConfig.Builder()
.application(this)
.credentials(String, String)
.enableDefaultChannel("MainChannel", "Default Channel")
//.disableDefaultChannel()
.build();
MobileEngage.setup(config);
}
}
这个问题与:
.application(this) ,其中 (this) 下方有一条红色错误行,说明:
builder中的application(android.app.Application)不能应用到(com.emarsys.tcspushtestapp.MainActivity)
编译错误: 错误:不兼容的类型:MainActivity 无法转换为 Application
当我将我的类更改为扩展到 Application 而不是 AppCompatActivity 时,错误消失了,但 .onCreate、setContentView 和 findViewById 上出现了新错误。
我尝试过的其他事情是: 公共类 MainActivity 扩展 AppCompatActivity 实现 Application
然后它抱怨它期待一个应用程序的接口。
非常感谢任何帮助!
谢谢。 亲切的问候, 医学博士
【问题讨论】:
-
你不明白什么?狗和猫是动物,但狗不是猫……
-
您不能只将活动更改为应用程序。您需要一个单独的类来扩展应用程序。
-
因为 .application(this) 指的是应用程序上下文而不是 Activity 上下文,所以你应该在其中使用 .application(getApplication())