java.lang.RuntimeException: невозможно создать экземпляр компонента ComponentInfo - PullRequest
143 голосов
/ 14 января 2011

Я пытался запустить пример кода При запуске приложения в эмуляторе андроид 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

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

Ответы [ 38 ]

0 голосов
/ 04 июля 2018

Не делай так

ImageView imageView=findViewById(R.id.imageView);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

Делай так

ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    imageView=findViewById(R.id.imageView);
0 голосов
/ 02 февраля 2014

Также, если вы извлекаете что-то из intent другого действия, используя getIntent в текущем действии и устанавливаете эти извлеченные данные до / выше onCreate, то это исключение выдается.

Например,,если я извлекаю строку, подобную этой

final String slot1 = getIntent().getExtras().getString("Slot1");

и помещаю эту строку кода перед / выше onCreate, то это исключение выдается.

0 голосов
/ 06 сентября 2012

Вы должны убедиться, что все действия в вашем приложении правильно определены в файле 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" >
0 голосов
/ 01 января 2013

у вас могут быть ошибки в ваших полях, например

public class Search_costumer extends Activity {

// you may have some errors like this 
int x =3/0;
// I have error in initializing this variable too 
 MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener();

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
}
}

поэтому я советую выполнить всю инициализацию в методе onCreate, а не непосредственно в ваших полях

решить так

public class Search_costumer extends Activity {

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

// you may have some errors like this 
int x =3/0;
// I have error in initializing this variable too 
 MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener();
}
}
0 голосов
/ 29 апреля 2018

Иногда isMinifyEnabled = false может помочь (обязательно очистите проект перед запуском)

0 голосов
/ 04 марта 2013

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

Вам просто нужно добавить имя в manifest вручную.

<activity
android:name="Activity_Class_Name"
android:label="@string/app_name">
</activity>
0 голосов
/ 12 апреля 2019

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

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

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

0 голосов
/ 07 августа 2013

Это также может произойти, если у вас есть два проекта с одинаковым именем пакета, и вы запустили один из них раньше другого, так что, я думаю, это сбивает с толку Eclipse.Для меня это произошло, когда я скопировал учебник по Android в Eclipse в той же рабочей области и оставил имена пакетов такими же, но добавил ActionBarSherlock (ABS) к нему, например,

 package="com.example.android.whatever"

Так в моем файле AndroidManifest.xml,и проект учебника, который находился в моей рабочей области, и скопированный проект учебника, имели строку пакета:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.whatever"

    ....
</manifest>

Просто измените имя пакета путем рефакторинга (В eclipse щелкните правой кнопкой мыши пакет на вкладке Package Explorer>выберите Refractor> выберите Rename ...), а затем измените его в файле AndroidManifest.xml и в любом другом месте, где вам нужно (например, как все ваши файлы .java)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...