如何从app小部件访问sqlite数据库?

时间:2015-03-22 18:33:59

标签: android sqlite widget

DBHelper是创建数据库的数据库助手类。它有一个方法getTimetable,它返回一个Timetable对象。当我在主活动中使用它时它工作正常并返回正确的Timetable对象。我在创建DBhelper时传入(this)作为上下文参数。但是,当我试图在小部件updateAppWidget方法中运行它时,它会崩溃系统我认为它发生了我不会像在主活动中那样传递相同的上下文。

static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {

    String daysFull[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

    DBHelper myDB = new DBHelper(context);
    Timetable t = myDB.getTimetable();
    //t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK],(new Date()).getHours()+":00")
    TimeSlot ts = null;
    String text = "";
    System.out.print(t.toString());
    if (t != null) {

        int hourCount = (new Date()).getHours();
        while (hourCount < 22) {

            if (t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK], hourCount + ":00") != null) {

                ts = t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK], (new Date()).getHours() + ":00");
                break;
            }
        hourCount++;
    }
    System.out.println("hello hello hello");
    if (ts != null) {

        text = ts.getStartTime() + "\n" + ts.getModule() + "\n" + ts.getRoomNumber();
    } else {

        text = "No More Classes\nFor Today";
    }
}

2 个答案:

答案 0 :(得分:0)

今天是星期天,所以我从Calendar.DAY_OF_WEEK得到7,所以当调用daysFull [Calendar.DAY_OF_WEEK]时,它指向不存在的变量和craches ......

所以我使用了daysFull [Calendar.DAY_OF_WEEK] -1而不是......

答案 1 :(得分:0)

AppWidget和您的应用程序有不同的上下文,您可以使用ContentProvider

http://developer.android.com/reference/android/content/ContentProvider.html

  

只有在需要在多个应用程序之间共享数据时才需要内容提供商

相关问题