0

こんにちは、私は初心者で、Android を学習しています... @Abhiによって書かれた この投稿から次のコードを取得しました

電話の実際のカレンダーにリマインダーを入れますか?

この投稿は答えを提供しますが、コードのみです。私が抱えている問題を誰かに助けてもらいたいのですが、最初はコードです:

onClickListenerEvent のコードは次のとおりです。

btnOne.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // Calendar dateToShow = Calendar.getInstance();
                // dateToShow.set(2013, Calendar.MAY, 10, 9, 0);
                //
                // showCalendarAtTime(dateToShow);
                Uri event1;
                long epoch, epoch1;
                Uri EVENTS_URI = Uri.parse(getCalendarUriBase(this) + "events");
                ContentResolver cr = getContentResolver();

                ContentValues values = new ContentValues();

                try 
                {
                    epoch = new java.text.SimpleDateFormat ("yyyy-MM-dd hh:mm a").parse(date+" "+time).getTime();
                    //epoch=epoch;
                    Log.e("epoch",String.valueOf(epoch));
                    epoch1 = new java.text.SimpleDateFormat ("yyyy-MM-dd hh:mm a").parse(date+" "+time).getTime();
                    //epoch1=epoch1;
                    Log.e("epoch1",String.valueOf(epoch1));
                } catch (ParseException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                values.put("calendar_id", 1);
                values.put("title", "Appoitment");
                values.put("allDay", 0);
                values.put("dtstart",epoch); // event starts at 11 minutes from now
                values.put("dtend", epoch1 ); // ends 60 minutes from now
                values.put("description", "Your consulting date and time ");
                values.put("visibility", 0);
                values.put("hasAlarm", 1);
                if(EVENTS_URI!=null){
                    event1 = cr.insert(EVENTS_URI, values);
                }

                // reminder insert
                Uri REMINDERS_URI = Uri.parse(getCalendarUriBase(this) + "reminders");
                values = new ContentValues();
                values.put( "event_id", Long.parseLong(event1.getLastPathSegment()));
                values.put( "method", 1 );
                values.put( "minutes", 10 );
                if(REMINDERS_URI!=null){   
                    cr.insert( REMINDERS_URI, values );
                }
                alertDialog.setTitle("Event Saved");
                Dismiss();
                alertDialog.show();
                }

                // reminder insert
                Uri REMINDERS_URI = Uri.parse(getCalendarUriBase(this)+ "reminders");
                values = new ContentValues();
                values.put("event_id", id);
                values.put("method", 1);
                values.put("minutes", 0);
                cr.insert(REMINDERS_URI, values);

            }

        });

getCalendarUriBase コード:

private String getCalendarUriBase(Activity act) {
String calendarUriBase = null;
Uri calendars = Uri.parse("content://calendar/calendars");
Cursor managedCursor = null;
try {
    managedCursor = act.managedQuery(calendars, null, null, null, null);
} catch (Exception e) {
}
if (managedCursor != null) {
    calendarUriBase = "content://calendar/";
} else {
    calendars = Uri.parse("content://com.android.calendar/calendars");
    try {
        managedCursor = act.managedQuery(calendars, null, null, null, null);
    } catch (Exception e) {
    }
    if (managedCursor != null) {
        calendarUriBase = "content://com.android.calendar/";
    }
}
return calendarUriBase;
}

上記のコードに問題がありました。投稿にはURI型変数などの回答がほとんど見つかりませんでしevent1たが、次の問題があります。

onClickListenerEvent() の問題

  1. 次のコードは、このエラーのあるコードの下に赤い線を入れます

getCalendarUriBase(Activity)型のメソッドMainActivityは引数に適用できません(new View.OnClickListener(){})」、コードは次のとおりです。

Uri.parse(getCalendarUriBase(this)+ "reminders");
  1. 次の行のエポック、日付、時刻の戻り値の型は何ですか?

epoch = new java.text.SimpleDateFormat ("yyyy-MM-dd hh:mm a").parse(date+" "+time).getTime();

  1. 次のコードは何ですか? EclipseではalertDialog、8つの修正が利用可能であるため、最初の修正は「新しい変数の作成」です。そうであれば、変数のタイプは何ですか? 結果を取得したり、カレンダーにイベントを追加したりするために必要ですか?

    alertDialog.setTitle("Event Saved");

    Dismiss();

    alertDialog.show();

  2. Eclipse の次の行で、非推奨の警告が表示されます。

    managedCursor = act.managedQuery(calendars, null, null, null, null);

@Abhi または経験豊富な人が私を助けてくれますか? 私は初心者であり、アンドロイドはまったくユーザーが好きではありません。

ありがとう。

4

1 に答える 1

2

次の 2 つのことが起こっているようです。

1) サンプル コードが何を行っているか、または何を意味するかについて、いくつかの基本的な質問があります。これらは基本的なJava関連の質問です

2)あなたはカレンダーAPI(おそらくAPI 14より前?)で作業していて、それは複雑です

「onClickListenerEvent() の問題」に関する 1 について: getCalendarBaseUri() メソッドを呼び出すときに、その時点で匿名クラスにいるため、「this」をアクティビティへの参照として使用することはできません。クラス名を前に付けて、「this」キーワードを修飾します。例: 「MyActivity.this」

2 番目の質問については、「getTime()」は long を返します ( http://developer.android.com/reference/java/util/Date.htmlを参照)。

最後に、Activity クラスの "managedQuery()" メソッドは API 11 で非推奨になりました。これは、プロジェクトの目標に応じて、重要になる場合とそうでない場合があります。

全体として、カレンダーのコードは必要以上に複雑に思えます (おそらく、元の作成者が api 14 より前のイベントのプッシュをサポートしようとしていたためでしょうか?)。API 14+ をターゲットにする余裕がある場合は、CalendarContract ( http://developer.android.com/reference/android/provider/CalendarContract.html ) を調べてください。

于 2013-05-10T14:25:00.903 に答える