我已根据我在活动中所做的工作以及此处的其他问题创建了此代码。我没有错。只是一条警告信息:
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
我从未使用从数据库中提取小部件的数据。无论哪种方式,我都没有得到任何直接错误,可以放置小部件,它只是填充textview的空白。
我使用的数据库有超过2000个项目,所以它绝对不是空的。我希望它只显示一个。我在带有按钮的活动中完美地做到了这一点。 (按下按钮,数据库中的一个结果显示在文本视图中)。
我真的很想得到一些帮助。我觉得我非常接近。
编辑:当我开始工作时,我打算制作这个开源软件,我看不到任何其他开源项目可以帮助解决这类问题,所以如果我开始工作,我可以与大家分享答案 0 :(得分:0)
看起来你正试图在启动器进程中从db获取数据(widget在“主启动器进程”下工作),因此异常告诉“进程不好”。
为了从数据库中获取数据并在widgetm中显示它,我建议您使用RemoteViewsService和RemoteViewsFactory类。它们允许您使用ListView或StackView等视图创建和更新小部件。 / p>
有关详细信息,请参阅this examples。
答案 1 :(得分:0)
我最终自己解决了这个问题。我会在某些时候让我的项目开源,因为那里几乎没有任何细节。我基本上不得不在open和close数据库之上调用createDatabase()方法。我猜它没有被召唤。