android - 如何为 Android 中 fragment 内的 TextView 显示或设置日期选择器对话框?

标签 android android-fragments android-datepicker

我绝对是 Android 的初学者。我正在尝试使用日期选择器对话框为 fragment 内的文本字段设置文本。

这是 Activity 中文本字段的 fragment

public class CreateTaskFragment extends Fragment{
    private Button saveBtn;
    private EditText tfDescription,tfDate;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.create_task,container,false);

        tfDescription = (EditText)view.findViewById(R.id.tf_task_description);
        tfDate = (EditText)view.findViewById(R.id.tf_task_date);
        tfDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment pickerFragment = new SelectDateFragment();
                pickerFragment.show(getFragmentManager(),"DatePicker");
            }
        });

        saveBtn = (Button)view.findViewById(R.id.btn_save_task);
        saveBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveTask();
            }
        });

        return view;
    }

    public void saveTask()
    {
        String description = tfDescription.getText().toString();
        String date = tfDate.getText().toString();
    }
}

这是选择器的对话框 fragment

public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar calendar = Calendar.getInstance();
        int yy = calendar.get(Calendar.YEAR);
        int mm = calendar.get(Calendar.MONTH);
        int dd = calendar.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(), this, yy, mm, dd);
    }

    public void onDateSet(DatePicker view, int yy, int mm, int dd) {
        populateSetDate(yy, mm+1, dd);
    }
    public void populateSetDate(int year, int month, int day) {
        //set the date here

    }

}

我的问题是如何为上一个 fragment 的文本字段设置选定日期。 Datepicker 正在运行,我不知道如何为编辑文本设置选定日期。

最佳答案

给你一个简单的解决方案,把OnClick里面的代码换成这个就可以了

public void onClick(View v) {

            final Calendar calendar = Calendar.getInstance();
            int yy = calendar.get(Calendar.YEAR);
            int mm = calendar.get(Calendar.MONTH);
            int dd = calendar.get(Calendar.DAY_OF_MONTH);
            DatePickerDialog datePicker = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    String date = "Date"+String.valueOf(year) +"-"+String.valueOf(monthOfYear)
                            +"-"+String.valueOf(dayOfMonth);
                    tfDescription.setText(date);
                    tfDate.setText(date);
                }
            }, yy, mm, dd);
            datePicker.show();

选择日期后,您会看到 tfDescription/tfDate 的 EditText 发生了变化

关于android - 如何为 Android 中 fragment 内的 TextView 显示或设置日期选择器对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34973643/

相关文章:

android - 如何在 osmdroid 中下载 map ?

java - 如何确定android中语句的cpu使用情况

java - 在 Android studio 中替换导航栏中的 fragment 时出错

java - 如何禁用日期选择器中的所有昨天的日期

android - 在 android 的 datePicker 对话框中,月份名称与 M+number 一起出现

android - JSON 对象到 listView

android - 注册一个应用程序以在 Android 中使用对话框显示在“完成操作”中

java - 膨胀类 fragment 时出错

Android滑动 fragment 而不是菜单