0

나는 사용자가 날짜를 입력해야하는 Fragment가 있습니다. 나는 DatePickerDialog을 사용하여 대화 상자를 시작하는 단추 누르기 후에 해당 정보를 가져옵니다. 그러나 Fragment 내에 DatePickerDialog을 포함시킬 수 있는지 궁금해서 버튼 누르기 대신 사용자가 캘린더와 상호 작용할뿐입니다. 필자는 샘플을 작성하여 XML 위젯을 사용하여 표시하도록했지만 데이터를 처리하는 코드를 작성하는 방법을 찾지 못했습니다. 여기에 있다고 코드 :DatePickerDialog를 조각으로 변환하려면 어떻게해야합니까?

import android.app.Activity; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.DialogFragment; 
import android.support.v7.app.AlertDialog; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.DatePicker; 

import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 


public class DatePickerFragment extends DialogFragment { 

    private static final String ARG_DATE = "date"; 
    public static final String EXTRA_DATE = "extraDate"; 
    private DatePicker mDatePicker; 

    public static DatePickerFragment newInstance(Date date){ 
     Bundle args = new Bundle(); 
     args.putSerializable(ARG_DATE, date); 

     DatePickerFragment fragment = new DatePickerFragment(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle SavedInstanceState){ 
     Date date = (Date) getArguments().getSerializable(ARG_DATE); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 
     int year = calendar.get(Calendar.YEAR); 
     int month = calendar.get(Calendar.MONTH); 
     int day = calendar.get(Calendar.DAY_OF_MONTH); 

     View view = LayoutInflater.from(getActivity()).inflate(R.layout.dailog_date, null); 

     mDatePicker = (DatePicker) view.findViewById(R.id.dialog_date_date_picker); 
     mDatePicker.init(year, month, day, null); 

     return new AlertDialog.Builder(getActivity()).setView(view).setTitle(R.string.date_picker_title).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       int year = mDatePicker.getYear(); 
       int month = mDatePicker.getMonth(); 
       int day = mDatePicker.getDayOfMonth(); 
       Date date = new GregorianCalendar(year, month, day).getTime(); 
       sendResult(Activity.RESULT_OK, date); 
      } 
     }).create(); 
    } 

    private void sendResult(int resultCode, Date date){ 
     if(getTargetFragment() == null){ 
      return; 
     } 
     Intent intent = new Intent(); 
     intent.putExtra(EXTRA_DATE, date); 

     getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent); 
    }  
} 

답변

0

는 조각을 만들고이를 리스너를 추가하여보기의 다른 종류처럼 단지 DatePicker에서 위젯을 치료 :

다음은 대화입니다.

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.DatePicker; 
import android.widget.Toast; 

import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 


public class DateFragmentTest extends Fragment { 

private DatePicker datePicker; 

public static DateFragmentTest newInstance(){ 
    return new DateFragmentTest(); 
} 

public DateFragmentTest(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.date_picker_test, container , false); 

    Calendar calendar = Calendar.getInstance(); 
    int year = calendar.get(Calendar.YEAR); 
    int month = calendar.get(Calendar.MONTH); 
    int day = calendar.get(Calendar.DAY_OF_MONTH); 

    datePicker = (DatePicker) view.findViewById(R.id.date_picker_widget); 
    datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() { 
     @Override 
     public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) { 
      Date date = new GregorianCalendar(i, i1, i2).getTime(); 
      // do something with the date here 
     } 
    }); 

    return view; 
    } 
} 

및 상응하는 XML :

<?xml version="1.0" encoding="utf-8"?> 
<DatePicker 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/date_picker_widget" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:datePickerMode="spinner" 
    android:calendarViewShown="false"> 
</DatePicker> 
관련 문제