GridView奇怪的错误

时间:2011-04-21 06:11:24

标签: android gridview

我的gridview有一个奇怪的错误。它工作正常,直到它无缘无故崩溃。 以下是错误代码:

04-21 14:00:08.610: ERROR/AndroidRuntime(578): FATAL EXCEPTION: main  
04-21 14:00:08.610: ERROR/AndroidRuntime(578): java.lang.RuntimeException: Unable to start activity ComponentInfo{joel.TPLibrary/joel.TPLibrary.MainBody}: java.lang.NullPointerException  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.os.Handler.dispatchMessage(Handler.java:99)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.os.Looper.loop(Looper.java:123)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.app.ActivityThread.main(ActivityThread.java:4627)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at java.lang.reflect.Method.invokeNative(Native Method)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at java.lang.reflect.Method.invoke(Method.java:521)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at dalvik.system.NativeStart.main(Native Method)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578): Caused by: java.lang.NullPointerException  
***04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at joel.TPLibrary.MainBody.onCreate(MainBody.java:31)***  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)  
04-21 14:00:08.610: ERROR/AndroidRuntime(578):     ... 11 more  

接下来是错误行:

    GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new MyAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            // TODO Auto-generated method stub
            switch (position) {
                case 0:
                    Intent myIntentSearch = new Intent();
                    myIntentSearch.setClassName("joel.TPLibrary","joel.TPLibrary.Search");
                    startActivity(myIntentSearch);
                    break;
                case 1:
                    Intent myIntentFP = new Intent();
                    myIntentFP.setClassName("joel.TPLibrary","joel.TPLibrary.FloorPlan");
                    startActivity(myIntentFP);
                    break;
                case 2:
                    Intent myIntentNews = new Intent();
                    myIntentNews.setClassName("joel.TPLibrary","joel.TPLibrary.News");
                    startActivity(myIntentNews);
                    break;
                case 3:
                    Intent myIntenteRes = new Intent();
                    myIntenteRes.setClassName("joel.TPLibrary","joel.TPLibrary.eResources");
                    startActivity(myIntenteRes);
                    break;
                case 4:
                    Intent myIntentOH = new Intent();
                    myIntentOH.setClassName("joel.TPLibrary","joel.TPLibrary.OpeningHours");
                    startActivity(myIntentOH);
                    break;
                case 5:
                    Intent myIntentCU = new Intent();
                    myIntentCU.setClassName("joel.TPLibrary","joel.TPLibrary.ContactUs");
                    startActivity(myIntentCU);
                    break;
                case 6:
                    Intent myIntentLibFb = new Intent();
                    myIntentLibFb.setClassName("joel.TPLibrary","joel.TPLibrary.LibraryFacebook");
                    startActivity(myIntentLibFb);
                    break;
                case 7:
                    Intent myIntentNA = new Intent();
                    myIntentNA.setClassName("joel.TPLibrary","joel.TPLibrary.NewArrivals");
                    startActivity(myIntentNA);
                    break;
                case 8:
                    Intent myIntentAnn = new Intent();
                    myIntentAnn.setClassName("joel.TPLibrary","joel.TPLibrary.Announements");
                    startActivity(myIntentAnn);
                    break;
            }
        }
    });
}

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

由于您的Activity是基于

访问的
... at joel.TPLibrary.MainBody.onCreate(MainBody.java:31)*** 
在堆栈跟踪中

行,我能想到的唯一可能导致此问题的是:

  • 您忘记设置内容 查看您内部的Activity onCreate()方法,例如:setContentView(R.layout.main);
  • 您的main.xml(简称 上面的R.layout.main)不包含 一个<GridView android:id="@+id/gridview" [...] 元件。

提供onCreate方法的全部来源,并标记31.行将有助于检测确切的问题,而不仅仅是猜测。请分享更多信息/回复您的意见。