在一个按钮上添加单击事件,程序倒是没有报错。可在模拟器里运行的时候,点击按钮就貌似出现BUG了。这是我的程序。package com.example.helloandroid;import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button aboutbutton = (Button)findViewById(R.id.about_button);
aboutbutton.setOnClickListener( new OnClickListener(){

public void onClick(View v){
switch(v.getId()){
case R.id.about_button:
Intent i = new Intent(new MainActivity(),AboutActivity.class);
startActivity(i);
break;
}
}
});

}}
这个是点击按钮后的log.
12-07 15:37:35.030: E/AndroidRuntime(880): FATAL EXCEPTION: main
12-07 15:37:35.030: E/AndroidRuntime(880): java.lang.NullPointerException
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.content.ContextWrapper.getPackageName(ContextWrapper.java:135)
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.content.ComponentName.<init>(ComponentName.java:75)
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.content.Intent.<init>(Intent.java:3491)
12-07 15:37:35.030: E/AndroidRuntime(880):  at com.example.helloandroid.MainActivity$1.onClick(MainActivity.java:22)
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.view.View.performClick(View.java:4202)
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.view.View$PerformClick.run(View.java:17340)
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.os.Handler.handleCallback(Handler.java:725)
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.os.Handler.dispatchMessage(Handler.java:92)
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.os.Looper.loop(Looper.java:137)
12-07 15:37:35.030: E/AndroidRuntime(880):  at android.app.ActivityThread.main(ActivityThread.java:5039)
12-07 15:37:35.030: E/AndroidRuntime(880):  at java.lang.reflect.Method.invokeNative(Native Method)
12-07 15:37:35.030: E/AndroidRuntime(880):  at java.lang.reflect.Method.invoke(Method.java:511)
12-07 15:37:35.030: E/AndroidRuntime(880):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-07 15:37:35.030: E/AndroidRuntime(880):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-07 15:37:35.030: E/AndroidRuntime(880):  at dalvik.system.NativeStart.main(Native Method)

解决方案 »

  1.   

     把这句Intent i = new Intent(new MainActivity(),AboutActivity.class); 
    修改为Intent i = new Intent(MainActivity.this,AboutActivity.class); 
    然后确保你的AboutActivity在Manifest.xml中有注册
    这样就可以启动另一个Activity了。
      

  2.   

    我觉得似乎注册了,这是Manifest.XML文件
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.helloandroid"
        android:versionCode="1"
        android:versionName="1.0" >    <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/activity_main_title"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.helloandroid.MainActivity"
                android:label="@string/continue_lable" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name="com.example.helloandroid.AboutActivity"
                android:label="@string/about_title" >
            </activity>
        </application></manifest>
      

  3.   

    不能这么写:
     Intent i = new Intent(new MainActivity(),AboutActivity.class);
                    startActivity(i);
    You cannot write : new XXXActivity().new MainActivity() 改为 MainActivity.this即可。