Ответ 1
Это проблема вашего намерения.
Пожалуйста, добавьте Activity
в свой AndroidManifest.xml
.
Если вы хотите создать новую активность, вы должны зарегистрировать ее в своем AndroidManifest.xml
.
Я пытался запустить образец кода При запуске приложения в эмуляторе 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 Эта ошибка происходит с большинством новичков, дело в том, что вы должны добавить все свои действия в файл манифеста.
Это проблема вашего намерения.
Пожалуйста, добавьте Activity
в свой AndroidManifest.xml
.
Если вы хотите создать новую активность, вы должны зарегистрировать ее в своем AndroidManifest.xml
.
В моем случае я забыл добавить библиотеку карт google
<application>
....
<uses-library android:name="com.google.android.maps" />
</application>
Кроме того, убедитесь, что перед прохождением пути вы не пропустили предыдущую точку.
<activity android:name=".activities.MainActivity"/>
Возможно, вы пытаетесь найти представление до 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);
}
...
}
Существует еще один способ получить исключение java.lang.RuntimeException: Невозможно создать экземпляр Activity ComponInfoInfo, и это действие, которое вы пытаетесь запустить, это abstract. Я сделал эту глупую ошибку один раз, и ее очень легко упустить.
Это также происходит из-за этой проблемы. Я снял флажки, которые нужно было экспортировать в apk, и это случилось. Пожалуйста, отметьте флажки, которые необходимо выполнить вашему приложению.
Я тоже столкнулся с этой проблемой, но несколько иначе. Вот мой сценарий:
Подробности приложения:
<uses-library android:name="com.google.android.maps" />
в манифесты как проекта библиотеки, так и моего основного проекта (это может быть необязательно в библиотеке?)Однако я все еще сталкивался с ошибкой, описанной в исходном посте, и не мог заставить ее уйти. Однако проблема была несколько иной:
Как я его исправил:
Этот шаг не устранил проблему
Как только кувшин был добавлен в путь сборки, я изменил порядок на пути Java Build Path > Order and Export - я установил JAR в первый элемент в списке (это было последним после /src и/gen).
Затем я перестроил и перенастроил приложение на свое устройство - он работал, как ожидалось, на новой установке. Чтобы быть уверенным, я удалил его снова 2-3 раза и переустановил - все равно работал как ожидалось.
Это может быть полная ошибка новобранец, но я потратил довольно много времени на то, чтобы разобраться в сообщениях и моем коде, чтобы понять это, поэтому, надеюсь, это может быть полезно кому-то другому. Может не исправить все ситуации, но в этом конкретном случае это стало решением моей проблемы.
Это может быть не актуально для актуального вопроса, но в моем случае я попытался реализовать Kotlin и оставил apply plugin: 'kotlin-android'
. Ошибка произошла из-за того, что не удалось распознать MainActivity в файле .kt.
Надеюсь, что это поможет кому-то.
Эта ошибка также может быть окончательным признаком глупой ошибки (например, когда я - я имею в виду, кашель, как когда мой друг, который однажды показал мне свой код), где они пытаются выполнить код вне метода, например, пытаться для этого:
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);
....
}
Я избавился от этой проблемы, удалив папку Bin
и Gen
из проекта (которая автоматически вернется при сборке проекта), а затем очистку проекта от → Меню → Проект → очистить.
Спасибо.
В моем случае я не установил setContentView(R.layout.main);
Если вы создаете новый класс, не устанавливайте его в методе onCreate(Bundle savedInstanceState)
.
Я сделал эту глупую ошибку несколько раз.
Для меня моя строка пакета в AndroidManifest.xml
была неправильной (скопирована из учебника).
Убедитесь, что строка пакета в этом файле такая же, как и в вашем основном действии, например
package="com.example.app"
Легкий способ сделать это - открыть файл AndroidManifest.xml на вкладке "Манифест" и ввести его в текстовое поле рядом с Пакетом или использовать кнопку "Обзор".
Кроме того, строка пакета для моей активности была неправильной, например.
<activity android:name="com.example.app.MainActivity" android:label="@string/app_name">
Я (тупо) получил ту же ошибку спустя несколько недель, когда переименовал имя своего пакета. Если вы это сделаете, убедитесь, что вы также обновили файл AndroidManifest.xml
.
Просто очистите рабочий проект или перезапустите eclipse. Затем запустите проект. он будет работать.
Хорошо, я довольно опытен на iPhone, но новичок в android. Я получил эту проблему, когда у меня было:
Button infoButton = (Button)findViewById(R.id.InfoButton);
эта строка кода выше:
@Override
public void onCreate (Bundle savedInstanceState) {
}
Может быть, я лишен сна: P
Недавно я столкнулся с новой переустановкой Eclipse. Оказывается, мой уровень соответствия компиляторам установлен на Java 1.7, а для проекта требуется 1.6.
В Eclipse: Project → Свойства → Компилятор Java → Соответствие JDK
Получил эту проблему и исправил ее, установив свойство "запуска" для этой операции.
Другой причиной этой проблемы может быть недостающая библиотека.
Перейдите в раздел Свойства → Android и убедитесь, что вы правильно добавили библиотеки.
У меня была та же проблема, но у меня была заявленная активность в файле манифеста с правильным именем.
Моя проблема заключалась в том, что мне не пришлось импортировать библиотеки сторонних разработчиков в папку "libs", и мне нужно было ссылаться на них в моем proyect (правая кнопка мыши, свойства, путь сборки Java, библиотеки, добавление Jar...).
Это может произойти, если ваш класс активности находится в пакете по умолчанию. Я исправил это, переместив класс активности в новый пакет. и изменение manifest.xml
перед
activity android:name=".MainActivity"
после
activity android:name="new_package.MainActivity"
Это происходит со мной довольно часто при использовании NDK. Я обнаружил, что мне нужно делать "Очистить" в Eclipse после каждого раза, когда я делаю ndk-build
. Надеюсь, это поможет любому:)
Эта ошибка также возникает, когда вы используете ActionBarActivity
, но назначаете стиль AppCompat
.
Чтобы исправить это, просто установите родительский стиль вашего приложения в Theme.AppCompat
, например:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
</style>
Щелкните правой кнопкой мыши по проекту > properties > android > и попробуйте с другой версией андроида раньше, чем я занимался с android 4.4, затем я изменил на android 4.3, и он сработает!
У меня была такая же проблема (не удалось создать экземпляр 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" />
Надеюсь, что это поможет
В моем случае я пытался внедрить Facebook SDK, и у меня был неправильный Application ID; таким образом, ошибка всплывала. В вашем файле манифеста вы должны иметь соответствующие метаданные:
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
Если у вас установлены Android Studio 2.3.3 и Android Studio 3.0.0, то переключение между двумя программами для разработки приведет к этой ошибке. Это связано с тем, что существуют ситуации, когда классы, поддерживаемые в одной программе, не поддерживаются другой и наоборот. Важно поддерживать согласованность, в которой версия Android Studio используется для разработки проекта.
Как было предложено djjeck
в комментарии в этом, я пропустил, чтобы добавить модификатор public
для моего класса.
Это должно быть
public class MyActivity extends AppCompatActivity {
Это может помочь некоторым вроде меня.
Я испробовал все вышеупомянутое решение, но у меня ничего не получалось. после того, как я просто добавил extend
активности вместо AppCompatActivity
и работает нормально.
используемый
public class MainActivity extends Activity
вместо
public class MainActivity extends AppCompatActivity
я не знаю, в чем дело.
В моем случае я пытался инициализировать компоненты (UI) еще до onCreate
для Activity.
Убедитесь, что компоненты пользовательского интерфейса инициализируются/связаны в onCreate
метод после setContentView
NB: Это моя первая ошибка при изучении программирования на Android.
Это случилось со мной, когда я попытался запустить Activity
на 2.2, который использовал импорт из Honeycomb, недоступный в старых версиях Android и не включенный в пакет поддержки v4.
Ваша новая активность добавляет AndroidManifest.xml
как ".NewActivity"
</activity>
<activity android:name=".NewActivity" />
Вы должны убедиться, что все действия в вашем приложении правильно определены в файле 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" >