ошибка: ожидаемый класс, интерфейс или перечисление MainActivity.java

#java #android #reactjs #android-studio

Вопрос:

Я пытаюсь скомпилировать приложение, которое использует Expo в Android Studio, однако каждый раз, когда я пытаюсь, я получаю следующее сообщение об ошибке:

 androidappsrcmainjavacomprofileidMainActivity.java:2: error: class, interface, or enum expected
package com.projectname;
 

Я только что обновился до Expo SDK 43 и перешел с react-native-unimodules него .

Мой MainActivity.java выглядит так:

 import expo.modules.ReactActivityDelegateWrapper;
package com.projectname;

import android.os.Bundle;

import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;

import expo.modules.splashscreen.singletons.SplashScreen;
import expo.modules.splashscreen.SplashScreenImageResizeMode;

public class MainActivity extends ReactActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // SplashScreen.show(...) has to be called after super.onCreate(...)
    // Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually
    SplashScreen.show(this, SplashScreenImageResizeMode.CONTAIN, ReactRootView.class, false);
  }


    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */
    @Override
    protected String getMainComponentName() {
        return "main";
    }

    @Override
    protected ReactActivityDelegate createReactActivityDelegate() {
        return new ReactActivityDelegateWrapper(this, new ReactActivityDelegate(this, getMainComponentName()) {
            @Override
            protected ReactRootView createRootView() {
                return new RNGestureHandlerEnabledRootView(MainActivity.this);
            }
        });
    }
}

 

Ответ №1:

Ваше первое import заявление и package заявление не в порядке. package Заявление должно быть в самой первой строке вашего файла:

 package com.projectname;

import android.os.Bundle;

import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;

import expo.modules.ReactActivityDelegateWrapper;
import expo.modules.splashscreen.singletons.SplashScreen;
import expo.modules.splashscreen.SplashScreenImageResizeMode;