1

ユーザーがアイコンを「クリック」すると、sqlite データベースを更新する appwidgetprovider があります。これは onRecieve メソッドによってトリガーされ、正常に機能しましたが、最初にアクティビティによってレコードが作成された場合にのみ機能するようです。

データベースは独自のDBadapterクラスによって処理され、アクティビティと appwidgetprovider の両方がこのクラスを同じ方法で使用します。

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

DBadapter が onCreate メソッドでデータベースを作成するため、アクティビティが a) データベースを作成し、b) 最初のレコードを作成できるのに、appwidgetprovider が作成できない理由を理解できません。

アクティビティが appwidgetprovider に対して行うその他の唯一の使用法は、データベース カーソルを使用してデータベース内を移動することです。

アクティビティによってデータベースがまだ作成されていない場合、データベースを実際に作成できない appwidgetprovider に制限はありますか? もしそうなら、これはアプリがインストールされた後に最初に起動されなければならないことを意味し、次にダミーのレコードが作成/削除されなければならないことを意味します。データベースに書き込みます。

onReceive がプライベート メソッドを呼び出して、データベースにレコードを追加するという反復的なタスクを実行することを忘れていました。これは最初からそうであり、レコードが既に存在する場合は機能しますが、存在しない場合はレコードを作成しません

4

1 に答える 1

0

Operator error here 私は質問を投稿し、このスレッド内でそれに答えました:

アプリウィジェットの質問

それで、私は onReceive メソッドのコーディングを開始し、愚かにも次のことを行いました。

} else { 

       super.onReceive(ctx,intent);
   }

コードの一部で、supper.onReceive をメソッドの一番下に残しました。これを再適用すると、データベースに書き込むようになります。申し訳ありません。

私は恥ずかしくて頭を下げます:)

于 2013-01-27T22:19:52.523 に答える