开发者

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.activit开发者_Python百科y 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


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.


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜