Запуск первого приложения на эмуляторе Android

#android

#Android

Вопрос:

Я пытаюсь запустить свое первое приложение hello World на эмуляторе 2.3.1, но получаю следующее сообщение об ошибке: «Приложение Hello World (процесс com.helloworld) неожиданно остановилось. Попробуйте еще раз.

В чем может быть причина, по которой это происходит?

Вот исходный код:

  package com.helloworld;

 import android.app.Activity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;

 public class HelloWorldActivity extends Activity implements View.OnClickListener {

     Button button;
     int touchCount;

     @Override 
     public void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);
         button = new Button(this); //create the Button
         button.setText( "Touch me" ); //set its initial text
         button.setOnClickListener(this); 
         setContentView(button);    
          }

     public void onClick(View v) {
         touchCount  ; //Increase the touchCount
         button.setText("Touched me "   touchCount   "time(s)");
     }  
    }
  

Трассировка стека:

 05-10 17:32:18.749: ERROR/AndroidRuntime(511): FATAL EXCEPTION: main
05-10 17:32:18.749: ERROR/AndroidRuntime(511): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.helloworld/com.helloworld.HelloWorld.activity}: java.lang.ClassNotFoundException: com.helloworld.HelloWorld.activity in loader dalvik.system.PathClassLoader[/data/app/com.helloworld-1.apk]
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.os.Looper.loop(Looper.java:123)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.app.ActivityThread.main(ActivityThread.java:3647)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at java.lang.reflect.Method.invokeNative(Native Method)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at java.lang.reflect.Method.invoke(Method.java:507)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at dalvik.system.NativeStart.main(Native Method)
05-10 17:32:18.749: ERROR/AndroidRuntime(511): Caused by: java.lang.ClassNotFoundException: com.helloworld.HelloWorld.activity in loader dalvik.system.PathClassLoader[/data/app/com.helloworld-1.apk]
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536)
05-10 17:32:18.749: ERROR/AndroidRuntime(511):     ... 11 more
  

http://pastebin.com/7R9pF34w

Комментарии:

1. Вы должны публиковать не скриншот ошибки, а трассировку стека.

2. Пожалуйста, опубликуйте весь соответствующий исходный код, выходные данные Logcat и т.д. в рамках вашего вопроса, а не с использованием внешних сайтов. Я даже не могу просмотреть изображение, потому что политика work IT блокирует его.

3. StackTrace не показывает никакой ошибки! и я запустил код, и он работает нормально, но у меня 2.2 API 8 уровня

4. На самом деле это вывод на консоль. Отслеживание стека будет в Logcat. Если на Eclipse, вы можете найти его в Window->Show View->Other...->Android->Logcat

5. @kachilous это не трассировка стека с позиции, в которой генерируется исключение.

Ответ №1:

Как отмечалось в комментарии выше, проблема заключалась в этой строке в манифесте:

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

android:name Атрибут сообщает виртуальной машине, какой класс следует искать при запуске действия, но ваш класс был создан как public class HelloWorldActivity в вашем файле .java. Таким образом, когда виртуальная машина попыталась создать экземпляр HelloWorld.activity объекта, она не смогла этого сделать и завершила работу с ClassNotFoundException . Решение состоит в том, чтобы изменить приведенное выше на следующее:

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

… чтобы оно соответствовало вашему определению класса, что позволило виртуальной машине найти его. Кроме того, причина, по которой это вызвало сбой сразу при запуске, заключается в том, что первая запись activity считается активностью «start up».

Вы можете найти дополнительную документацию, относящуюся к файлу манифеста здесь.

Ответ №2:

на самом деле, вычеркните мой последний комментарий. вы не используете кнопку в качестве макета для установки contentView. создайте макет, поместите кнопку на макет, выполните sentContentView(R.layout.your_layout); затем найдите кнопку (или добавьте ее в макет)

попробуйте следовать руководству по hello world:http://developer.android.com/resources/tutorials/hello-world.html