【问题标题】:Implementing DatePicker in Fragment在 Fragment 中实现 DatePicker
【发布时间】:2014-01-22 07:13:08
【问题描述】:

我正在使用 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);
        }

Fragment中如何实现DatePicker

【问题讨论】:

    标签: android android-fragments datepicker fragment


    【解决方案1】:

    使用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());    
    }
    }
    

    【讨论】:

    【解决方案2】:

    如何在 Fragment 中实现 DatePicker?

    与在Fragment 中“实现”TextView 的方式相同:让onCreateView() 返回一个View,它是或包含DatePicker。例如,您可能有一个包含 DatePicker 小部件的布局文件,并让 onCreateView() 扩展该布局。

    【讨论】:

    • 但我希望发生的是,当我单击按钮时,日期选择器将显示。
    • @AndroidNewbie:这正是马克所说的。
    【解决方案3】:

    。 . .由于 Fragment 和 DialogFragment 的类型不匹配,这在我的情况下不起作用

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多