2013-07-12 2 views
2

특정 날짜에 캘린더 이벤트를 만들려면 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()는 두 개를 만듭니다. 왜?

+0

'싱글 톤'으로 만드십시오. – Manjunath

+0

동일한 문제가있는 사람이라면 여기서 해결 방법을 성공적으로 구현 한 것입니다. http://stackoverflow.com/questions/11444238/jelly-bean-datepickerdialog-is - 방법 - 취소 할 –

답변

0

이것은 a known bug입니다. 추가 이벤트를 무시하거나 DatePicker의 대화 상자를 굴리는 것이 좋습니다.

+0

오 이런. 그건 꽤 짜증나. 누군가가 고정 된'DatePickerDialog'를 게시 한 것을 볼 수 있습니다. 이를 구현하고 어떤 일이 일어나는지 살펴볼 것입니다. –

+0

글쎄, 내 말은, 내가 어떻게 알아낼 수 있다면. 나는이 점에서 새로운 점이있다. –

+0

해결 방법을 찾으셨습니까? http://stackoverflow.com/questions/11444238/jelly-bean-datepickerdialog-is-there-a-way-to-cancel –

관련 문제