0

こんにちは私は、Androidアプリ用のgoogle-api-java-clientとcalenderAPIサービスを使用してカレンダーにイベントを追加しようとしています。Yaniv Inbarによって作成されたcalendersampleプロジェクトを、うまく機能するテンプレートとして使用しました。選択したカレンダーに1つのイベントを挿入すると完全に機能しますが、カレンダーにイベントをバッチ追加しようとすると、不正な状態の例外が発生します。

この例では、このようなカレンダーをバッチで追加できます。クラス全体はここにありますAsyncBatchInsertCalendars.java

@Override
protected void doInBackground() throws IOException {
   BatchRequest batch = client.batch();
   for (Calendar calendar : calendars) {
      client.calendars().insert(calendar).setFields(CalendarInfo.FIELDS)
      .queue(batch, new JsonBatchCallback<Calendar>() {
         public void onSuccess(Calendar calendar, GoogleHeaders headers) {
            model.add(calendar);
         }
         @Override
         public void onFailure(GoogleJsonError err, GoogleHeaders headers)
         throws IOException {
            Utils.logAndShowError(activity, CalendarSampleActivity.TAG, err.getMessage());
         }
      });
   }
   batch.execute();
}

カレンダーではなくイベントになるようにクラスを書き直しました。クラスAsyncBatchInsertEvent.java全体を見ると、doInBackgroundメソッドで、イベントのリストを作成する配列リストもループしていることがわかります。これは、指定されたカレンダーに挿入されるバッチに追加する必要があります。

@Override
protected void doInBackground() throws IOException {
   BatchRequest batch = client.batch();
   for (Event event : events) {
      client.events().insert(calender.id, event).queue(batch, 
      new JsonBatchCallback<Event>() {
         public void onSuccess(Event event, GoogleHeaders headers) {
            //TODO show succes message.
         }
         @Override
         public void onFailure(GoogleJsonError err, GoogleHeaders headers)
         throws IOException {
            Utils.logAndShowError(activity, EventActivity.TAG, err.getMessage());
         }
      });
   }
   batch.execute();
}

これを使用すると、例外が発生し、アプリがクラッシュします

W/dalvikvm(21030): threadid=20: thread exiting with 
uncaught exception (group=0x40c19930)
E/AndroidRuntime(21030): FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime(21030): java.lang.RuntimeException: An error occured 
while executing doInBackground()

エラーの完全なスタックトレースは、pastebinlog.txtにあります。誰かがこれを修正する方法を知っていますか、または私はコードを間違って実装しましたか?コード全体は、pastbinAsyncBatchInsertEvent.javaにあります。

4

1 に答える 1

1

愚かな私、arraylist イベントは空だったので、string.equels(string) の代わりに string == string をチェックしました。

于 2013-01-16T10:39:07.013 に答える