У меня проблема с созданием приложения, которую я не могу решить, и мне нужна помощь.
У меня простой класс MainActivity.java Это очень простое приложение для тестирования получения push-сообщений через 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) имеет красную строку ошибки под ним, в которой говорится:
приложение (android.app.Application) в построителе не может быть применено к (com.emarsys.tcspushtestapp.MainActivity)
Ошибка компиляции: ошибка: несовместимые типы: MainActivity не может быть преобразован в приложение
Когда я изменяю свой класс для расширения на Application, вместо AppCompatActivity, ошибка исчезает, но появляются новые ошибки в файлах .onCreate, setContentView и findViewById.
Другие вещи, которые я пробовал: открытый класс MainActivity расширяет AppCompatActivity реализует приложение
Затем он жалуется, что ожидает интерфейс для приложения.
Любая помощь очень ценится!
Спасибо. С уважением, Доктор медицины
вы не можете просто изменить действие на приложение. Для этого вам нужен отдельный класс, который расширяет приложение.
потому что .application (this) относится к контексту приложения, а не к контексту действия, поэтому вы должны использовать .application (getApplication ()) в этом




this относится к MainActivity. Действие имеет тип Context. Конструктору MobileEngageConfig нужен экземпляр вашего класса Application. Вместо этого используйте getApplication();
edit: в учебнике, которому вы следовали, скорее всего, использовался метод построения в пользовательском классе приложения, поэтому они использовали this.
Я буду поддерживать его, так как он содержит исправление, как писал Хитеш.
Сообщение Хитеша Сарсавы устранило мою проблему.
.application (getApplication ()) решил проблему, поэтому я буду использовать его ответ в качестве решения.
Посты всех остальных тоже были отличными и помогли мне глубже разобраться в проблеме, так что спасибо всем!
вы должны заменить MainActivity.this на новый FlutterEngine (this);
Удалите приведенный ниже код в файле манифеста
meta-data android:name = "flutterEmbedding"
android:value = "2"
запустите свой проект еще раз, он будет работать нормально
попробуйте использовать это
class MainActivity: FlutterActivity () {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
GeneratedPluginRegistrant.registerWith(flutterEngine)
}
}
Что ты не понял? Собаки и кошки - животные, но собака - не кошка ...