【问题标题】:Android - getting value from datepicker on a fragment/tabAndroid - 从片段/选项卡上的日期选择器获取价值
【发布时间】:2016-03-22 21:16:17
【问题描述】:

我有一个包含 3 个选项卡/片段的活动,其中一个现在有一个日期选择器,单击按钮即可打开。日期选择器可以工作,但我很困惑如何在片段类上获取所选日期以在更改后自动加载一些数据?

好像我需要某种 onDateSet 但在我的按钮单击所在的片段类上。

如果可以的话请指教,谢谢:

Fragment1/Tab1:

在 btn 点击打开日期选择器:

 public void onClick(View v) {
        switch (v.getId()){
            case R.id.bFromDate:
                DialogFragment picker = new DatePickerFragment();
                picker.show(getActivity().getFragmentManager(), "datePicker");
                break;

        }
    }

日期选择器片段:

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

谢谢你..

【问题讨论】:

    标签: android android-fragments datepicker


    【解决方案1】:

    您可以在实例化 DialogFragment 时设置目标片段 -

    DialogFragment picker = new DatePickerFragment();
    picker.setTargetFragment(this, <request_code>); // any number
    picker.show(getActivity().getFragmentManager(), "datePicker");
    

    并且在您的DialogFragment 中,每当您想将数据发送回调用片段时,

    Intent intent = new Intent();
    intent.putStringExtra("key_date", formattedDate);
    getTargetFragment().onActivityResult(getTargetRequestCode(), <request_code>, intent);
    

    并在您的接收片段中,实现onActivityResult() 以接收来自DialogFragment 的数据。

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Make sure fragment codes match up 
        if (requestCode == <request_code>) {
    
    
          String date = data.getStringExtra("key_date");
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-30
      • 2018-04-07
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      相关资源
      最近更新 更多