Java Android Studio:错误:不兼容类型:MainActivity无法转换为应用程序
我在构建我的应用程序时遇到了一个无法解决的问题,我需要一些帮助 我有一个简单的类,MainActivity.java 这是一个非常基本的应用程序,用于测试通过FCB接收推送消息。 我现在也在尝试为第三方实现SDK,以发送和接收推送,这就是我遇到的问题 这是我的班级代码: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
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写的一样。