1

我有一个 appwidgetprovider,当用户“单击”图标时,它会更新我的 sqlite 数据库。这是由 onRecieve 方法触发的,并且工作正常,但现在看来,它仅在活动首先创建记录时才有效。

数据库由它自己的DBadapter类处理,活动和 appwidgetprovider 都以相同的方式使用这个类:

mydb = new DBadapter(this);  
mydb = mydb.open();

由于 DBadapter 在 onCreate 方法中创建数据库,我无法理解为什么活动 a) 创建数据库和 b) 可以创建第一条记录但 appwidgetprovider 不能。

该活动对 appwidgetprovider 所做的唯一其他用途是使用数据库游标在数据库中导航。

如果活动尚未创建,appwidgetprovider 是否存在无法实际创建数据库的限制?如果是这样,这意味着应用程序必须在安装后首先启动,然后必须创建/删除虚拟记录,因为我对此进行了测试,发现一旦活动创建然后删除记录,appwidgetprovider 就可以写入数据库。

忘了提到 onReceive 调用一个私有方法来执行将记录添加到数据库的重复任务。从一开始就是这种情况,当记录已经存在时它可以工作,但是当没有记录时它不会创建任何记录

4

1 回答 1

0

操作员错误在这里我发布了一个问题,然后在这个线程中回答了这个问题:

应用小部件问题

所以我然后开始编写 onReceive 方法并且愚蠢地太愚蠢了:

} else { 

       super.onReceive(ctx,intent);
   }

部分代码,然后只是将 supper.onReceive 留在方法的底部,因为重新应用它,它现在正在写入数据库。非常遗憾 。

我羞愧地低下了头:)

于 2013-01-27T22:19:52.523 回答