Android Studio:错误:不兼容的类型:MainActivity无法转换为Application

时间:2018-04-19 12:04:32

标签: java android

构建我无法解决的应用程序存在问题,我需要一些帮助。

我有一个简单的类MainActivity.java 这是一个非常基本的应用程序来测试通过FCB接收推送消息。 我现在也在尝试为第三方实施SDK,发送和接收Push through,这是我陷入困境的地方。

这是我班级的代码:

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)下面有一条红色错误行说明:

构建器中的

application(android.app.Application)无法应用于(com.emarsys.tcspushtestapp.MainActivity)

编译错误: 错误:不兼容的类型:MainActivity无法转换为Application

当我将我的类更改为扩展到Application而不是AppCompatActivity时,错误消失,但.onCreate,setContentView和findViewById上出现新错误。

我尝试过的其他事情是: 公共类MainActivity扩展AppCompatActivity实现Application

然后抱怨它期待应用程序的接口。

非常感谢任何帮助!

谢谢。 亲切的问候, MD

5 个答案:

答案 0 :(得分:2)

您必须将MainActivity.this替换为新的FlutterEngine(this);

答案 1 :(得分:1)

this指的是MainActivity。活动属于Context类型。 MobileEngageConfig构建器需要Application类的实例。请改用getApplication();

编辑:您所遵循的教程很可能在自定义Application类中使用了builder方法,因此他们使用了this

答案 2 :(得分:0)

Hitesh Sarsava的帖子解决了我的问题。

.application(getApplication())解决了这个问题,所以我会用他的答案作为解决方案。

其他人的帖子也很棒,帮助我更深入地了解这个问题,谢谢大家!

答案 3 :(得分:0)

删除清单文件中的以下代码

meta-data android:name="flutterEmbedding" 
android:value="2"

再次运行您的项目,它将正常工作

答案 4 :(得分:0)

尝试使用这个

class MainActivity: FlutterActivity() {

override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    GeneratedPluginRegistrant.registerWith(flutterEngine)
}

}