Java Android Studio:错误:不兼容类型:MainActivity无法转换为应用程序

Java Android Studio:错误:不兼容类型:MainActivity无法转换为应用程序,java,android,Java,Android,我在构建我的应用程序时遇到了一个无法解决的问题,我需要一些帮助 我有一个简单的类,MainActivity.java 这是一个非常基本的应用程序,用于测试通过FCB接收推送消息。 我现在也在尝试为第三方实现SDK,以发送和接收推送,这就是我遇到的问题 这是我的班级代码: package com.emarsys.tcspushtestapp; import android.app.Application; import android.support.v7.app.AppCompatActivi

我在构建我的应用程序时遇到了一个无法解决的问题,我需要一些帮助

我有一个简单的类,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);
    }
}
此问题与以下问题有关:

。应用程序(this),其中(this)下有一条红色错误线,说明:

生成器中的应用程序(android.app.application)无法应用于(com.emarsys.tcspushtestapp.MainActivity)

编译错误: 错误:不兼容的类型:MainActivity无法转换为应用程序

当我将类更改为“扩展到应用程序”而不是“AppCompatActivity”时,错误消失,但新错误出现在.onCreate、setContentView和findViewById上

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

然后,它抱怨说,它希望为应用程序提供一个接口

非常感谢您的帮助

多谢各位。 亲切问候,,
MD

指的是主活动。活动属于上下文类型。MobileEngageConfig生成器需要应用程序类的实例。使用
getApplication()取而代之


编辑:您遵循的教程很可能在自定义应用程序类中使用了builder方法,因此他们为什么使用
this
this
是指MainActivity。活动属于上下文类型。MobileEngageConfig生成器需要应用程序类的实例。使用
getApplication()取而代之


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

Hitesh Sarsava的帖子修复了我的问题

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


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

希特什·萨尔萨瓦的帖子解决了我的问题

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


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

您必须将MainActivity.this替换为新引擎(this)

您必须将MainActivity.this替换为新引擎(this)

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

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

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

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

meta-data android:name="flutterEmbedding" 
android:value="2"
再次运行您的项目,它将正常工作

尝试使用此

类MainActivity:activity(){

}

尝试使用此

类MainActivity:activity(){


}

您不明白什么?狗和猫都是动物,但狗不是猫…检查样本,你不能只是将活动更改为应用程序。您需要一个单独的类来扩展应用程序,因为.application(this)引用的是应用程序上下文而不是活动上下文,所以您应该在其中使用.application(getApplication()),您不理解什么?狗和猫都是动物,但狗不是猫…检查样本,你不能只是将活动更改为应用程序。您需要一个单独的类来扩展应用程序。因为.application(this)引用的是应用程序上下文而不是活动上下文,所以您应该使用.application(getApplication())在其中,我将向上投票,因为它包含修复程序,就像Hitesh写的一样。我将向上投票,因为它包含修复程序,就像Hitesh写的一样。