Java.lang.RuntimeException: невозможно создать экземпляр активности ComponentInfo

Я пытался запустить образец кода При запуске приложения в эмуляторе android 1.5 я получил эти ошибки.... У любого есть какой-то намек..?

ОШИБКА из LogCat:

01-13 02:28:08.392: ERROR/AndroidRuntime(2888): FATAL EXCEPTION: main
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.s.android.test/com.s.android.test.MainActivity}: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.os.Looper.loop(Looper.java:123)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.main(ActivityThread.java:3647)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.reflect.Method.invokeNative(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.reflect.Method.invoke(Method.java:507)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at dalvik.system.NativeStart.main(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Caused by: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     ... 11 more
01-13 02:28:08.407: WARN/ActivityManager(112):   Force finishing activity com.s.android.test/.MainActivity

Edit Эта ошибка происходит с большинством новичков, дело в том, что вы должны добавить все свои действия в файл манифеста.

Ответ 1

Это проблема вашего намерения.

Пожалуйста, добавьте Activity в свой AndroidManifest.xml.

Если вы хотите создать новую активность, вы должны зарегистрировать ее в своем AndroidManifest.xml.

Ответ 2

В моем случае я забыл добавить библиотеку карт google

<application>
    ....

    <uses-library android:name="com.google.android.maps" />
</application>

Кроме того, убедитесь, что перед прохождением пути вы не пропустили предыдущую точку.

<activity android:name=".activities.MainActivity"/>

Ответ 3

Возможно, вы пытаетесь найти представление до onCreate(), которое является неправильным.

public class MainActivity extends Activity {

  ImageView mainImage = (ImageView) findViewById(R.id.imageViewMain); //incorrect

  @Override
  protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  ...
}

Ответ 4

Существует еще один способ получить исключение java.lang.RuntimeException: Невозможно создать экземпляр Activity ComponInfoInfo, и это действие, которое вы пытаетесь запустить, это abstract. Я сделал эту глупую ошибку один раз, и ее очень легко упустить.

Ответ 5

Image

Это также происходит из-за этой проблемы. Я снял флажки, которые нужно было экспортировать в apk, и это случилось. Пожалуйста, отметьте флажки, которые необходимо выполнить вашему приложению.

Ответ 6

Я тоже столкнулся с этой проблемой, но несколько иначе. Вот мой сценарий:

Подробности приложения:

  • Использование ActionBarSherlock в качестве библиотеки
  • Использование android-support-v4-r7-googlemaps.jar в библиотеке ActionBarSherlock, чтобы я мог использовать "фрагмент карты" в своем основном проекте
  • Добавлен банку в путь сборки моего основного проекта
  • Включен <uses-library android:name="com.google.android.maps" /> в манифесты как проекта библиотеки, так и моего основного проекта (это может быть необязательно в библиотеке?)
  • манифест в основном проекте имел правильное определение активности и все соответствующие свойства
  • У меня не было абстрактного действия или каких-либо других ошибок, которые я видел при переполнении стека, относящихся к этой проблеме.

Однако я все еще сталкивался с ошибкой, описанной в исходном посте, и не мог заставить ее уйти. Однако проблема была несколько иной:

  • Это повлияло только на новую установку приложения на мое устройство. Каждый раз, когда приложение установлено в первый раз, я получаю ошибку, предшествующую нескольким "предупреждениям": Не удается разрешить суперкласс FragmentActivity
  • Эти предупреждения восходят к библиотеке ActionBarSherlock.
  • Приложение будет принудительно закрываться и сбой.
  • Если я немедленно перестроил и переустановил приложение, он работал нормально.
  • Единственный раз, когда он разбился, был на совершенно новой установке. Если я удалю приложение, которое снова будет создано и развернуто из Eclipse, оно будет аварийно завершено. Создайте/разверните второй раз, он будет работать нормально.

Как я его исправил:

  • В проекте библиотеки ActionBarSherlock я добавил файл android-support-v4-r7-googlemaps.jar в путь сборки
  • Этот шаг не устранил проблему

  • Как только кувшин был добавлен в путь сборки, я изменил порядок на пути Java Build Path > Order and Export - я установил JAR в первый элемент в списке (это было последним после /src и/gen).

  • Затем я перестроил и перенастроил приложение на свое устройство - он работал, как ожидалось, на новой установке. Чтобы быть уверенным, я удалил его снова 2-3 раза и переустановил - все равно работал как ожидалось.

Это может быть полная ошибка новобранец, но я потратил довольно много времени на то, чтобы разобраться в сообщениях и моем коде, чтобы понять это, поэтому, надеюсь, это может быть полезно кому-то другому. Может не исправить все ситуации, но в этом конкретном случае это стало решением моей проблемы.

Ответ 7

Это может быть не актуально для актуального вопроса, но в моем случае я попытался реализовать Kotlin и оставил apply plugin: 'kotlin-android'. Ошибка произошла из-за того, что не удалось распознать MainActivity в файле .kt.

Надеюсь, что это поможет кому-то.

Ответ 8

Эта ошибка также может быть окончательным признаком глупой ошибки (например, когда я - я имею в виду, кашель, как когда мой друг, который однажды показал мне свой код), где они пытаются выполнить код вне метода, например, пытаться для этого:

SQLiteDatabase db = openOrCreateDatabase("DB", MODE_PRIVATE, null); //trying to perform function where you can only set up objects, primitives, etc

@Override
public void onCreate(Bundle savedInstanceState) {
....
}

вместо этого:

SQLiteDatabase db;

@Override
public void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase("DB", MODE_PRIVATE, null);
....
}

Ответ 9

Я избавился от этой проблемы, удалив папку Bin и Gen из проекта (которая автоматически вернется при сборке проекта), а затем очистку проекта от → Меню → Проект → очистить.

Спасибо.

Ответ 10

В моем случае я не установил setContentView(R.layout.main);

Если вы создаете новый класс, не устанавливайте его в методе onCreate(Bundle savedInstanceState).

Я сделал эту глупую ошибку несколько раз.

Ответ 11

Для меня моя строка пакета в AndroidManifest.xml была неправильной (скопирована из учебника). Убедитесь, что строка пакета в этом файле такая же, как и в вашем основном действии, например

 package="com.example.app"

Легкий способ сделать это - открыть файл AndroidManifest.xml на вкладке "Манифест" и ввести его в текстовое поле рядом с Пакетом или использовать кнопку "Обзор".

Кроме того, строка пакета для моей активности была неправильной, например.

<activity android:name="com.example.app.MainActivity" android:label="@string/app_name">

Я (тупо) получил ту же ошибку спустя несколько недель, когда переименовал имя своего пакета. Если вы это сделаете, убедитесь, что вы также обновили файл AndroidManifest.xml.

Ответ 12

Просто очистите рабочий проект или перезапустите eclipse. Затем запустите проект. он будет работать.

Ответ 13

Хорошо, я довольно опытен на iPhone, но новичок в android. Я получил эту проблему, когда у меня было:

Button infoButton = (Button)findViewById(R.id.InfoButton);

эта строка кода выше:

@Override
public void onCreate (Bundle savedInstanceState) {
}

Может быть, я лишен сна: P

Ответ 14

Недавно я столкнулся с новой переустановкой Eclipse. Оказывается, мой уровень соответствия компиляторам установлен на Java 1.7, а для проекта требуется 1.6.

В Eclipse: Project → Свойства → Компилятор Java → Соответствие JDK

Ответ 15

Получил эту проблему и исправил ее, установив свойство "запуска" для этой операции.

Ответ 16

Другой причиной этой проблемы может быть недостающая библиотека.

Перейдите в раздел Свойства → Android и убедитесь, что вы правильно добавили библиотеки.

Ответ 17

У меня была та же проблема, но у меня была заявленная активность в файле манифеста с правильным именем.

Моя проблема заключалась в том, что мне не пришлось импортировать библиотеки сторонних разработчиков в папку "libs", и мне нужно было ссылаться на них в моем proyect (правая кнопка мыши, свойства, путь сборки Java, библиотеки, добавление Jar...).

Ответ 18

Это может произойти, если ваш класс активности находится в пакете по умолчанию. Я исправил это, переместив класс активности в новый пакет. и изменение manifest.xml

перед

activity android:name=".MainActivity" 

после

activity android:name="new_package.MainActivity"

Ответ 19

Это происходит со мной довольно часто при использовании NDK. Я обнаружил, что мне нужно делать "Очистить" в Eclipse после каждого раза, когда я делаю ndk-build. Надеюсь, это поможет любому:)

Ответ 20

Эта ошибка также возникает, когда вы используете ActionBarActivity, но назначаете стиль AppCompat.

Чтобы исправить это, просто установите родительский стиль вашего приложения в Theme.AppCompat, например:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
</style>

Ответ 21

Щелкните правой кнопкой мыши по проекту > properties > android > и попробуйте с другой версией андроида раньше, чем я занимался с android 4.4, затем я изменил на android 4.3, и он сработает!

Ответ 22

У меня была такая же проблема (не удалось создать экземпляр Activity):

ПЕРВАЯ причина:

Я обращался к

Camera mCamera;
Camera.Parameters params = mCamera.getParameters();

до

mCamera = Camera.open();

Итак, правильный способ: сначала открыть камеру, а затем получить доступ к параметрам.

ВТОРАЯ причина: объявите свою активность в файле манифеста

<activity android:name=".activities.MainActivity"/>

ТРЕТЬЯ причина: Объявите разрешение камеры в файле манифеста.

<uses-feature android:name="android.hardware.Camera"></uses-feature>
<uses-permission android:name="android.permission.CAMERA" />

Надеюсь, что это поможет

Ответ 23

В моем случае я пытался внедрить Facebook SDK, и у меня был неправильный Application ID; таким образом, ошибка всплывала. В вашем файле манифеста вы должны иметь соответствующие метаданные:

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />

Ответ 24

Если у вас установлены Android Studio 2.3.3 и Android Studio 3.0.0, то переключение между двумя программами для разработки приведет к этой ошибке. Это связано с тем, что существуют ситуации, когда классы, поддерживаемые в одной программе, не поддерживаются другой и наоборот. Важно поддерживать согласованность, в которой версия Android Studio используется для разработки проекта.

Ответ 25

Как было предложено djjeck в комментарии в этом, я пропустил, чтобы добавить модификатор public для моего класса.

Это должно быть

public class MyActivity extends AppCompatActivity {

Это может помочь некоторым вроде меня.

Ответ 26

Я испробовал все вышеупомянутое решение, но у меня ничего не получалось. после того, как я просто добавил extend активности вместо AppCompatActivity и работает нормально.

используемый

public class MainActivity extends Activity  

вместо

public class MainActivity extends AppCompatActivity 

я не знаю, в чем дело.

Ответ 27

В моем случае я пытался инициализировать компоненты (UI) еще до onCreate для Activity.

Убедитесь, что компоненты пользовательского интерфейса инициализируются/связаны в onCreate метод после setContentView

NB: Это моя первая ошибка при изучении программирования на Android.

Ответ 28

Это случилось со мной, когда я попытался запустить Activity на 2.2, который использовал импорт из Honeycomb, недоступный в старых версиях Android и не включенный в пакет поддержки v4.

Ответ 29

Ваша новая активность добавляет AndroidManifest.xml как ".NewActivity"

 </activity>        
    <activity android:name=".NewActivity" />

Ответ 30

Вы должны убедиться, что все действия в вашем приложении правильно определены в файле AndroidManifest.xml.

Кроме того, если они начинаются с пути, убедитесь, что этот путь существует.

например. это не сработает:

<activity android:name=".com.example.android.networkusage.NetworkActivity" android:label="@string/app_name" >

Если ваше имя приложения com.example.networkusage (обратите внимание на отсутствующий .android.)

Или еще лучше, не включайте пути при определении активности внутри манифеста. Введите только свое имя (с точкой перед ним).

<activity android:name=".NetworkActivity" android:label="@string/app_name" >