React Native - текущая активность имеет неправильный класс, ожидается AppCompatActivity, получен MyActivityAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 React Native - текущая активность имеет неправильный класс, ожидается AppCompatActivity, получен MyActivity

Сообщение Anonymous »

Мне нужно вызвать собственный экран реагирования, когда я получаю автоматическое уведомление. В настоящее время я экспериментирую с состоянием телефона. Я делаю это с помощью класса PhoneStateListenr, который запускает второе действие с именем MyActivity, которое запускает внутри него код React Native.При запуске класса MyActivity я получил следующую ошибку: «Текущая активность имеет неправильный класс».

Код: Выделить всё

java.lang.IllegalStateException: Current Activity is of incorrect class, expected AppCompatActivity, received MyActivity
MyActivity активируется в зависимости от состояния телефона,

Код: Выделить всё

package com.apartmentapp;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class PhoneStateListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
final Context ctx;
ctx = context;

final Intent intnt = new Intent(context, MyActivity.class);

intnt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intnt.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

intnt.putExtra("phone_no", "9876543210");
intnt.putExtra("contact_name", "Test User");

intnt.putExtra("id", "1234");

ctx.startActivity(intnt);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Ниже находится MyActivityClass

Код: Выделить всё

package com.apartmentapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import com.facebook.hermes.reactexecutor.HermesExecutorFactory;
import com.facebook.react.BuildConfig;
import com.facebook.react.PackageList;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactPackage;
import com.facebook.react.ReactRootView;
import com.facebook.react.common.LifecycleState;
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
import com.facebook.soloader.SoLoader;

import java.util.List;

public class MyActivity extends Activity implements DefaultHardwareBackBtnHandler {
private Window wind;
private ReactRootView mReactRootView;
private ReactInstanceManager mReactInstanceManager;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setFinishOnTouchOutside(true);
super.onCreate(savedInstanceState);
SoLoader.init(this, false);

mReactRootView = new ReactRootView(this);
List  packages = new PackageList(getApplication()).getPackages();

mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setCurrentActivity(this)
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackages(packages)
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.setJavaScriptExecutorFactory(new HermesExecutorFactory())
.build();

mReactRootView.startReactApplication(mReactInstanceManager, "AlertPopupFragment", null);

setContentView(mReactRootView);
setContentView(R.layout.dialog);

FrameLayout alertPopUpFragment = findViewById(R.id.alertPopUpFragment);

alertPopUpFragment.addView(mReactRootView);
}

private Bundle getLaunchOptions(String message) {
Bundle initialProperties = new Bundle();
initialProperties.putString("message", message);
return initialProperties;
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();

wind = this.getWindow();
wind.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
wind.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
wind.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
wind.addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
wind.addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
}

@Override
public void invokeDefaultOnBackPressed() {

}
}

Я также пытался решить эту проблему, установив MyActivity в качестве MainActivity,
здесь MyActivity определена в файле манифеста Android Пожалуйста, предоставьте решение

Подробнее здесь: https://stackoverflow.com/questions/783 ... patactivit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»