Android:Sqlite致命异常主要

时间:2011-12-27 03:12:02

标签: android

//hi i am trying to retrieve the data from database and display in my activity.but it is giving error fatal exception main.here when i click showall button all student details shouls get dispalyed.


public class four extends Activity {
    Button showall;
    MyDataBase mydb;
    ListView lv;
    int str;

    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.snd);

         mydb=new MyDataBase(four.this);
            mydb.openDB();




    showall.setOnClickListener(new OnClickListener(){


        public void onClick(View v) {

            Log.i("INFO","ALL DETAILS");
            ArrayList<HashMap<String,String>> p2 = mydb.getAllSDetails();

                lv = (ListView)findViewById(R.id.listView1);

    //coloum.xml contains four text view,and string contains my coloum names.

               SimpleAdapter mSchedule = new SimpleAdapter(four.this, p2, R.layout.column,
                       new String[] {"_Sid","FName", "LName","clss","sec"}, new int[] {R.id.txtfname, R.id.txtlname,R.id.txtage,R.id.txtqual});
               lv.setAdapter(mSchedule);



                lv.setOnItemClickListener(select);

            }
        });
    }

            public OnItemClickListener select=new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                        long arg3) {
                    int idd[] = mydb.gettingId();
                    str = idd[position];


                }

              };
}

//我的错误日志。我无法解决问题。我的程序中有什么问题。我的错误日志。我无法解决问题。我的程序中有什么问题。任何人都可以指导我为什么会收到以下错误。

2-27 08:26:12.098: I/INFO(381): ALL DETAILS
12-27 08:26:12.098: I/INFO(381): database creation
12-27 08:26:12.108: I/INFO(381): Opening database
12-27 08:26:12.148: I/INFO(381): ALL DETAILS
12-27 08:26:12.158: D/AndroidRuntime(381): Shutting down VM
12-27 08:26:12.158: W/dalvikvm(381): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-27 08:26:12.180: E/AndroidRuntime(381): FATAL EXCEPTION: main
12-27 08:26:12.180: E/AndroidRuntime(381): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android/com.android.four}: java.lang.NullPointerException
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.os.Looper.loop(Looper.java:123)
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.app.ActivityThread.main(ActivityThread.java:4627)
12-27 08:26:12.180: E/AndroidRuntime(381):  at java.lang.reflect.Method.invokeNative(Native Method)
12-27 08:26:12.180: E/AndroidRuntime(381):  at java.lang.reflect.Method.invoke(Method.java:521)
12-27 08:26:12.180: E/AndroidRuntime(381):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-27 08:26:12.180: E/AndroidRuntime(381):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-27 08:26:12.180: E/AndroidRuntime(381):  at dalvik.system.NativeStart.main(Native Method)
12-27 08:26:12.180: E/AndroidRuntime(381): Caused by: java.lang.NullPointerException
12-27 08:26:12.180: E/AndroidRuntime(381):  at com.android.four.onCreate(four.java:40)
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-27 08:26:12.180: E/AndroidRuntime(381):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
12-27 08:26:12.180: E/AndroidRuntime(381):  ... 11 more

3 个答案:

答案 0 :(得分:0)

我会在这里。当您运行android时出错,您将始终收到堆栈跟踪。从那里,您可以决定查看给出错误的特定代码行。例如,根据您的情况:

12-27 08:26:12.180: E/AndroidRuntime(381): FATAL EXCEPTION: main
12-27 08:26:12.180: E/AndroidRuntime(381): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android/com.android.four}: java.lang.NullPointerException

当您尝试使用该对象时,此错误会告诉您(通过查看它的行的末尾)对象为空。

现在,您可能会想:“嗯...什么线路产生错误?”。幸运的是,它通过向下看堆栈跟踪告诉你:

12-27 08:26:12.180: E/AndroidRuntime(381): Caused by: java.lang.NullPointerException
12-27 08:26:12.180: E/AndroidRuntime(381):  at com.android.four.onCreate(four.java:40)

当您收到错误时,请查看该消息。如果您不理解它的含义,请谷歌确切的错误。在您的情况下java.lang.NullPointerException。之后,再次返回到堆栈跟踪,通过查找Caused by: {the error message}来查看实际生成此错误的行。就在该行之后,您将看到产生错误消息的实际行。返回到您的代码并检查该行中的代码以及生成此类错误消息的原因。在您的情况下,它是com.android.four.onCreate(four.java:40)。这意味着:

  

位于line 40 method onCreate()的{​​{1}}位于class four的{​​{1}}处的某处产生错误。

此时,如果您仍然不知道为什么该特定行会产生错误,您可以在这里或其他地方询问,添加您已经获得的信息(错误行,错误消息,您已经做了什么)检查为什么是错误)。通过提供这些信息,我相信你会得到更好的答案,因为人们会发现你已经做了一些努力来找到问题。

答案 1 :(得分:0)

我认为您尚未初始化按钮“ showall ”。

这样的东西
showall=(Button)findviewbyid(R.id.yourbuttonid);
你错过了吗?

答案 2 :(得分:0)

java.lang.NullPointerException

隐藏了您的错误

该怎么办?

1.line 40找到它。

2.此时检查声明(您可能刚刚错过了初始化)

3.运行您的代码无错误

这是第40行

public OnItemClickListener select=new AdapterView.OnItemClickListener()

我还可以建议您使用Cursor从数据库中检索您的值。在主类中声明游标(也是初始化),然后使用它来获取值。