특정 날짜에 캘린더 이벤트를 만들려면 http://developer.android.com/guide/topics/ui/controls/pickers.html에서 날짜 선택 도구를 구현하려고합니다. 이 stackoverflow 스레드에서 일부 코드를 잡았습니다 : How to add calendar events in Android? 캘린더 응용 프로그램을 시작하는 이벤트로 선택된 날짜를 전달합니다.날짜 선택 도구가 두 가지 이벤트를 만드는 이유는 무엇입니까?
그러나이 작업을 수행 할 때마다 두 개의 동일한 이벤트가 전달되므로 이유를 파악할 수 없습니다.
package com.example.calendartest;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.widget.DatePicker;
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener
{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
Calendar cal = Calendar.getInstance();
cal.set(year, month, day);
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("allDay", false);
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", "A Test Event from android app");
startActivity(intent);
}
}
당신은 내가 몇 가지 동일한 코드를 가지고 있음을 알 수 있습니다, 나는 ': 날짜 선택을 만듭니다
package com.example.calendartest;
import java.util.Calendar;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.content.Intent;
public class CalendarTest extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calendar_test);
}
public void testCalendar(View v) {
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("allDay", true);
intent.putExtra("rrule", "FREQ=YEARLY");
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", "A Test Event from android app");
startActivity(intent);
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
}
그리고 클래스 : 여기
는 내 주요 클래스에 대한 코드 테스트에 사용 해왔다. 두 가지 메소드, testCalendar() 및 showDatePickerDialog() 모두 이벤트를 작성하는 코드를 포함합니다. testCalendar()에서 이벤트는 현재 날짜와 시간을 사용하여 만들어집니다. showDatePickerDialog()에서 이벤트는 날짜 선택 도구에 의해 결정된 날짜와 시간을 사용하여 만들어집니다.나는 testCalendar()를 호출하는 버튼과 showDatePickerDialog()를 호출하는 버튼을 설정했다. testCalendar() 버튼은 올바르게 단일 이벤트를 만듭니다. showDatePickerDialog()는 두 개를 만듭니다. 왜?
'싱글 톤'으로 만드십시오. – Manjunath
동일한 문제가있는 사람이라면 여기서 해결 방법을 성공적으로 구현 한 것입니다. http://stackoverflow.com/questions/11444238/jelly-bean-datepickerdialog-is - 방법 - 취소 할 –