【问题标题】:android appwidgetprovider sqlite database not creating recordandroid appwidgetprovider sqlite 数据库未创建记录
【发布时间】:2013-01-10 19:42:38
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • Android 模拟器会导致不稳定的行为吗?我已经删除了调用写入数据库的方法的代码,并将 Toast 显示放在调用它的部分中,首先它们没有出现,我也正在创建第二个 appwidgetprovider 但这还没有那时在 Manifest 中设置。现在我已经完全设置了第二个,Toast 显示正在工作,所以我不知道发生了什么,我需要放回数据库部分,看看现在是否有效
  • 嗨,也许找到你的解决方案 here

标签: android sqlite appwidgetprovider


【解决方案1】:

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

Appwidget question

于是我开始编写 onReceive 方法,然后愚蠢地把它弄丢了:

} else { 

       super.onReceive(ctx,intent);
   }

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

我羞愧地低下了头:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多