2013-08-21 2 views
2

내가 설명으로 DatePickerDialog에 문제가 많은이 게시물 Jelly Bean DatePickerDialog --- is there a way to cancel?에가 알고 있지만 내 문제는 내가 표시 대신에 두 개의 버튼의 확인 버튼을 원하는 것입니다. 나는이 같은 DialogFragmentDatePickerDialog를 사용안드로이드 DatePickerDialog 디스플레이 하나의 버튼

public class DateDialog 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); 

    // set up mindate 
    minYear = year; 
    minMonth = month; 
    minDay = day; 

    // Create a new custom instance of DatePickerDialog and return it 
    return new CustomDatePickerDialog(getActivity(), this, year, month, day); 
} 
} 
+0

를 확장 내 CustomDatePickerDialog의 workaraound은? –

+0

기본 시스템 datepicker에는 두 개의 버튼이 있습니다. 단 하나의 버튼 만 갖고 싶다면 커스텀 날짜 선택 도구를 사용할 수 있습니다. – Hariharan

+0

@StefanoMunarini 예 – mrroboaat

답변

10

마침내 쉬운 해결책을 발견했습니다. 여기에 당신은`Cancel` 버튼을 삭제 의미 DatePickerDialog

public CustomDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear,int dayOfMonth) { 
    super(context, callBack, year, monthOfYear, dayOfMonth); 
    this.setButton(DatePickerDialog.BUTTON_POSITIVE, "OK",this); 
    this.setButton(DatePickerDialog.BUTTON_NEGATIVE, "",this); // hide cancel button 

} 
+0

TimePickerDialog에서도 작동합니다. –

+0

매력처럼 작동합니다. 고맙습니다. 'dialog.setButton (DatePickerDialog.BUTTON_NEGATIVE, null, (OnClickListener) null);'도 할 수있는 것처럼 보입니다. – lupz

2

당신은이 같은 사용자 정의 XML 사용할 수 있습니다

datepickerdialog.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 


<DatePicker 
     android:id="@+id/dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:calendarViewShown="false"/>  //delete this line if you want to show calendar too 


</RelativeLayout> 

그런 다음 버튼에 리스너를 추가 (또는 무엇이든) 및 팽창 이 레이아웃은 다음과 같습니다 :

yourclass.java

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.aggiungiesame); 

    Button button = (Button) findViewById(R.id.your_id_button); 
    button.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
    switch(v.getId()){ 
     case R.id.button: {     
      LayoutInflater inflater = getLayoutInflater(); 
      View customView = inflater.inflate(R.layout.datepickerdialog, null); 

      DatePicker dp = (DatePicker) customView.findViewById(R.id.dp);    

      ...OTHER CODE HERE 

      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setView(customView); 
      builder.setTitle("Select date:"); 

      builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){ 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        ...YOUR CODE HERE... 
        dialog.dismiss(); 
       } 
      }); 
      builder.create().show(); 
      break; 
     } 
    } 
} 

여기서 '확인'버튼 만 설정하면됩니다.

+0

쉬운 방법이 있습니까? 사실 DialogFragment를 사용하여 두 개의 대화 상자 (첫 번째 -> 날짜 및 그 다음 -> 시간)를 표시하고이 솔루션을 사용하여 많은 것을 변경해야합니다. 게다가 나는 5 분에서 5 분으로 단계를 설정하는 것과 같은 몇 가지 제한이 있습니다. – mrroboaat