简体   繁体   English

如何在一个Android屏幕上使用多个日期选择器?

[英]How to have multiple datepickers on one Android screen?

I created one screen in my Android app which contains a datepicker like so: 我在Android应用程序中创建了一个包含日期选择器的屏幕,如下所示:

    TextView userDateView = (TextView) getView().findViewById(R.id.text_user_date);
    userDateView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DatePickerFragment newFragment = new DatePickerFragment();
            newFragment.setListner(OverviewFragment.this);
            newFragment.show(getFragmentManager(), "datePicker");
        }
    });

and I created a callback which receives the date back and updates the userDateView, which all works fine. 我创建了一个回调,该回调接收日期并更新userDateView,一切正常。 In another screen I now want to have two dates next to eachother which the user can both select. 在另一个屏幕中,我现在要在彼此相邻的两个日期之间进行选择,用户都可以选择两个日期。 Unfortunately the callback doesn't know from which of the two dates the user started the datepicker fragment. 不幸的是,回调不知道用户从日期选择器片段的两个日期中的哪个开始。

Does anybody know how I can somehow know from which button the datepickerFragment was started? 有人知道我怎么能知道从哪个按钮启动了datepickerFragment吗? All tips are welcome! 欢迎所有提示!

A simple approach is to supply a parameter to each DatePickerFragment and send this parameter back to your callback, like requestCode on Activity.onActivityResult . 一种简单的方法是为每个DatePickerFragment提供一个参数,并将该参数发送回您的回调,例如Activity.onActivityResult requestCode。

See how to supply parameters to Fragments: http://developer.android.com/reference/android/app/Fragment.html#setArguments(android.os.Bundle) 了解如何向Fragment提供参数: http : //developer.android.com/reference/android/app/Fragment.html#setArguments(android.os.Bundle)

Btw, you can find a different approach here: 顺便说一句,您可以在这里找到其他方法:

Multiple DatePickers in same activity 同一活动中有多个DatePicker

Try something like this: 尝试这样的事情:

DatePickerFragment newFragment = new DatePickerFragment();
newFragment.setListner(new DatePickerDialog.OnDateSetListener() {
    @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)    {}
    });
newFragment.show(getFragmentManager(), "datePicker");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM