java–Android Null指针异常不确定如何修复它

java–Android Null指针异常不确定如何修复它,第1张

概述我的代码中的一行上的NullPointerException出现错误,我不知道如何修复它.它基本上只是另一种方法的副本,所以我不知道它为什么会给我错误.任何帮助,将不胜感激:importjava.util.Calendar;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.TabHo

我的代码中的一行上的Null Pointer Exception出现错误,我不知道如何修复它.它基本上只是另一种方法的副本,所以我不知道它为什么会给我错误.任何帮助,将不胜感激:

import java.util.Calendar;import androID.app.Activity;import androID.os.Bundle;import androID.Widget.TabHost;import androID.Widget.TabHost.TabSpec;import androID.Widget.TextVIEw;public class CurrentLesson extends Activity {TabHost th;TabSpec specs;TimingsDb tDb = new TimingsDb(this);Calendar c;String lesson;String week;String day;TextVIEw tvTab1;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    // Todo auto-generated method stub    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.current_lesson_tabs);    c = Calendar.getInstance();    tvTab1 = (TextVIEw) findVIEwByID(R.ID.textVIEwCLW1tv1);    setupTabs();    int h = c.get(Calendar.HOUR_OF_DAY);    int m = c.get(Calendar.MINUTE);    int w = c.get(Calendar.DAY_OF_WEEK);    if ((h == 9) && (m <= 50)) {        lesson = "1";    } else if (((h == 9)&&((m > 50)&&(m <=59))) || ((h == 10)&&(m<=40))) {        lesson = "2";    } else if ((h == 11)&&(m<=50)) {        lesson = "3";    } else if (((h == 12)&&((m > 50)&&(m <=59))) || ((h == 13)&&(m<=40))) {        lesson = "4";    } else if (((h == 13)&&((m > 40)&&(m <=59))) || ((h == 14)&&(m<=30))) {        lesson = "5";    } else if (((h == 14)&&((m > 30)&&(m <=59))) || ((h == 15)&&(m<=20))) {        lesson = "6";    } else {        lesson = "0";    }    switch(w){    case 2:        day = "Monday";        break;    case 3:        day = "Tuesday";        break;    case 4:        day = "Wednesday";        break;    case 5:        day = "Thursday";        break;    case 6:        day = "FrIDay";        break;    default:        day = "";    }//end switch    week = "1";    String temp;    temp = tDb.getCurrent(day,week,lesson); //THIS IS WHERE I GET THE EXCEPTION    if(!(temp == null)){        tvTab1.setText(temp);    }}// end onCreatepublic voID setupTabs() {    th = (TabHost) findVIEwByID(R.ID.tabhost2);    th.setup();    specs = th.newTabSpec("tag1");    specs.setContent(R.ID.tabCLWeek1);    specs.setIndicator("Week One");    th.addTab(specs);    specs = th.newTabSpec("tag2");    specs.setContent(R.ID.tabCLWeek2);    specs.setIndicator("Week Two");    th.addTab(specs);}}// endClass

这是我认为导致错误的getCurrent()方法:

public String getCurrent(String day, String week, String lesson) {    // Todo auto-generated method stub    String[] column = new String[] { KEY_SUBJECT };    String selection = KEY_DAY + " = ? AND " + KEY_WEEK + " = ? AND "            + KEY_LESSON + " = ?";    String[] selectionArgs = new String[] { day, week, lesson };    Cursor c = ourDatabase.query(DATABASE_table, column, selection,            selectionArgs, null, null, null);    ;    String result = "";    if (c.movetoFirst()) {        int iSubject = c.getColumnIndex(KEY_SUBJECT);        result = c.getString(iSubject);    }    c.close();    if (result == null) {        result = "";    }    return result;}

这是logcat:

03-18 09:46:06.259: E/AndroIDRuntime(20000): FATAL EXCEPTION: main03-18 09:46:06.259: E/AndroIDRuntime(20000): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shearer.schooltimetable/com.shearer.schooltimetable.CurrentLesson}: java.lang.NullPointerException03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2205)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2255)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.app.ActivityThread.access0(ActivityThread.java:146)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1240)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.os.Handler.dispatchMessage(Handler.java:99)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.os.Looper.loop(Looper.java:137)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.app.ActivityThread.main(ActivityThread.java:5171)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at java.lang.reflect.Method.invokeNative(Native Method)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at java.lang.reflect.Method.invoke(Method.java:511)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:564)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at dalvik.system.NativeStart.main(Native Method)03-18 09:46:06.259: E/AndroIDRuntime(20000): Caused by: java.lang.NullPointerException03-18 09:46:06.259: E/AndroIDRuntime(20000):    at com.shearer.schooltimetable.TimingsDb.getCurrent(TimingsDb.java:132)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at com.shearer.schooltimetable.CurrentLesson.onCreate(CurrentLesson.java:77)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.app.Activity.performCreate(Activity.java:5200)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)03-18 09:46:06.259: E/AndroIDRuntime(20000):    at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2169)03-18 09:46:06.259: E/AndroIDRuntime(20000):    ... 11 more

解决方法:

似乎ourDatabase为null.请确保正确启动它.或者您可以尝试替换它(假设TimingsDb是打开助手的包装器):

Cursor c = ourDatabase.query(DATABASE_table, column, selection,        selectionArgs, null, null, null);

有了这个:

Cursor c = this.getWritableDatabase().query(DATABASE_table, column, selection,        selectionArgs, null, null, null);
总结

以上是内存溢出为你收集整理的java – Android Null指针异常不确定如何修复它全部内容,希望文章能够帮你解决java – Android Null指针异常不确定如何修复它所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存