我根据我在活动中所做的工作以及关于 SO 的其他问题创建了此代码。我没有错误。只是一条警告信息:
04-30 19:19:26.063: W/BroadcastQueue(480):
Unable to launch app com.test.application/10091
for broadcast Intent { act=android.appwidget.action.APPWIDGET_ENABLED flg=0x10
cmp=com.test.application/.TestWidget }: process is bad
接下来是更新操作:
04-30 19:19:26.063: W/BroadcastQueue(480): Unable to launch app
com.test.application/10091 for broadcast Intent {
act=android.appwidget.action.APPWIDGET_UPDATE flg=0x10
cmp=com.test.application/.TestWidget (has extras) }: process is bad
然后(我不知道这是否是其中的一部分,它显示为蓝色):
04-30 19:19:34.073: D/Launcher.Model(752): DbDebug
Add item (null) to db, id: 126 (-100, 1, 1, 3)
这是我在 TestWidget 类中的代码:
package com.test.application;
public class TestWidget extends AppWidgetProvider {
static DBHelper dbhelper;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
updateWidgetContent(context, appWidgetManager, appWidgetIds);
}
public static void updateWidgetContent(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
dbhelper.openDatabase();
String name = "basestring";
Cursor c = getDatabaseHelper(context).getReadableDatabase().rawQuery("SELECT * FROM websites ORDER BY RANDOM()", null);
name = c.getString(c.getColumnIndex("weburl"));
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.main);
remoteView.setTextViewText(R.id.TextView1, name);
dbhelper.close();
appWidgetManager.updateAppWidget(appWidgetIds, remoteView);
}
private static DBHelper getDatabaseHelper(Context context) {
DBHelper dbhelper = null;
if (dbhelper == null) {
dbhelper = new DBHelper(context);
dbhelper.openDatabase();
}
return dbhelper;
}
}
我从我对数据库和活动的经验中获取了代码,还有一些来自这里:Android: get Widget Data from database
我从来没有从数据库中为小部件提取数据。无论哪种方式,我都没有收到任何直接错误,可以放置小部件,应该填充文本视图的地方只是空的。
我正在使用的数据库有超过 2000 个项目,所以它绝对不为空。我希望它只显示一个。我在一个带有按钮的 Activity 中完美地做到了这一点。(按下按钮,数据库中的一个结果会显示在文本视图中)。
我真的很想得到一些帮助。我觉得我很接近。
编辑:我计划在我开始工作时制作这个开源项目,我看不到任何其他开源项目可以帮助解决这类问题,所以如果我让它工作,我可以与大家分享。