Button Click事件的NullPointerException

时间:2013-04-24 12:47:35

标签: android

GridActivity.java

        // Get feed form the file
        feed = (RSSFeed) getIntent().getExtras().get("feed");

        createFeedGroup();

这是一个新手问题。我在FragmentActivity上有三个ImageButtons。当我点击btn_2和btn_3时,它会监听该事件,但如果我点击btn_1,它会给我一个错误。

btn_1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {

        Intent i = new Intent(getApplicationContext(), GridActivity.class);
            startActivity(i);

      }
});

btn_2.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {

        Intent i = new Intent(getApplicationContext(), SplashActivity.class);                   startActivity(i);

       }
});

btn_3.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

        openContextMenu(v);
    }   

});

这是堆栈跟踪:

04-24 08:29:10.022: E/AndroidRuntime(5176): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.td.rssreader/com.td.rssreader.GridActivity}: java.lang.NullPointerException
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.app.ActivityThread.access$700(ActivityThread.java:139)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.os.Looper.loop(Looper.java:137)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.app.ActivityThread.main(ActivityThread.java:4918)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at java.lang.reflect.Method.invokeNative(Native Method)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at java.lang.reflect.Method.invoke(Method.java:511)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at dalvik.system.NativeStart.main(Native Method)
04-24 08:29:10.022: E/AndroidRuntime(5176): Caused by: java.lang.NullPointerException
04-24 08:29:10.022: E/AndroidRuntime(5176):     at com.td.rssreader.GridActivity.onCreate(GridActivity.java:54)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.app.Activity.performCreate(Activity.java:5048)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
04-24 08:29:10.022: E/AndroidRuntime(5176):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2052)
04-24 08:29:10.022: E/AndroidRuntime(5176):     ... 11 more

1 个答案:

答案 0 :(得分:1)

您尝试从Intent检索Feed而不将其放入您的起始Intent:

来自GridActivity

feed = (RSSFeed) getIntent().getExtras().get("feed");

你需要像这样开始:

Intent i = new Intent(getApplicationContext(), GridActivity.class);
i.putExtra("feed", feed);
startActivity(i);

请注意,RSSFeed可能必须实现Parcelable才能实现此目的。