在Fragment中实现DatePicker

时间:2014-01-04 16:35:03

标签: android android-fragments datepicker fragment

我正在使用Fragment,它是Fragment的一个实例而不是DialogFragment。

我确实google的大部分搜索结果显示了如何使用DialogFragment来设置DatePicker。

由于Fragment和DialogFragment的类型不匹配,

在我的情况下不起作用

任何示例或想法都会有所帮助

这是片段Java代码

        public class CreateReportFragment extends Fragment {

        public CreateReportFragment(){}

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

               rootView = inflater.inflate(R.layout.activity_create_report, container, false);
               initViews();
               return rootView;
        }

        private void initViews() 
       {

         final Calendar c = Calendar.getInstance();
             year  = c.get(Calendar.YEAR);
             month = c.get(Calendar.MONTH);
             day   = c.get(Calendar.DAY_OF_MONTH);

             editTextDate.setText(new StringBuilder()
             // Month is 0 based, just add 1
             .append(year)
             .append("-")
                    .append(month + 1)
                     .append("-").append(day));

        buttonDate = (Button)rootView.findViewById(R.id.buttonDate);
        }

如何在片段中实施 DatePicker

3 个答案:

答案 0 :(得分:33)

使用DialogFragment

如果我猜对了,你想在点击buttonDate

时显示一个DatePicker

http://developer.android.com/guide/topics/ui/controls/pickers.html

点击按钮

DialogFragment picker = new DatePickerFragment();
picker.show(getFragmentManager(), "datePicker");

DatePickerFragment.java

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);
}

@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
Calendar c = Calendar.getInstance();
c.set(year, month, day);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(c.getTime());    
}
}

答案 1 :(得分:5)

  

如何在Fragment中实现DatePicker?

与在TextView中“实施”Fragment的方式相同:让onCreateView()返回View,其中包含DatePicker。例如,您可能有一个包含DatePicker窗口小部件的布局文件,并且onCreateView()会使该布局膨胀。

答案 2 :(得分:3)

  

。 。 。因为Fragment和DialogFragment的类型不匹配而在我的案例中工作

DialogFragment IS-A Fragment,因为它扩展了Fragment。因此,您可以在Fragment的任何地方使用DialogFragment。