kachilous
kachilous

Reputation: 2529

Running first application on Android Emulator

I am trying to run my first hello world application on the 2.3.1 emulator but I get the following error message: "The application Hello World (process com.helloworld) has stopped unexpectedly. Please try again.

What could be the reason this is happening?

Here is the source code:

 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)");
     }  
    }

Stack Trace:

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

Upvotes: 0

Views: 1317

Answers (2)

eldarerathis
eldarerathis

Reputation: 36193

As noted in the comment above, the problem was this line in the manifest:

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

The android:name attribute tells the VM what class to look for when launching the activity, but your class was created as public class HelloWorldActivity in your .java file. Thus, when the VM tried to instantiate a HelloWorld.activity object, it was unable to do so, and crashed with a ClassNotFoundException. The solution is to change the above to read:

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

...so that it matches your class definition, therefore allowing the VM to find it. Further, the reason this caused a crash immediately at start up is because the first activity entry is considered the "start up" activity.

You can find additional documentation pertaining to the manifest file here.

Upvotes: 1

jkhouw1
jkhouw1

Reputation: 7350

actually scratch my last comment. you don't use a button as the layout to setContentView on. create a layout, put the button on the layout, do the sentContentView(R.layout.your_layout); then find the button (or add it to the layout)

try following the tutorial for hello world: http://developer.android.com/resources/tutorials/hello-world.html

Upvotes: 1

Related Questions