如何使DialogFragment和FragmentManager一个datepicker?(How

2019-09-18 01:53发布

所以,我一直在这一段时间,我似乎无法弄清楚。 我在Android开发相当新的,所以忍耐一下吧。 我是不是太熟悉创建一个datepicker,我学会了做它的过时的方式只是为了得到它的窍门。 使用本教程让我加快速度:

http://developer.android.com/resources/tutorials/views/hello-datepicker.html

但现在我需要去改变它,主要是不使用过时的代码,所以我环顾四周,我发现2个教程,主要是这一个,但:

http://www.kylebeal.com/2011/11/android-datepickerdialog-and-the-dialogfragment/

问题是,有代码,没有任何意义。 主要是这一部分:

//create new DateDialogFragment
DateDialogFragment ddf = DateDialogFragment.newInstance(this, R.string.set_date, date);

ddf.setDateDialogFragmentListener(new DateDialogFragmentListener() {

    @Override
    public void dateDialogFragmentDateSet(Calendar date) {
        // update the fragment
        mDateDetailFragment.updateDate(date);
    }
});

ddf.show(getSupportFragmentManager(), "date picker dialog fragment");

这是假设是什么,它运行在活动课上运行,所以我有点弄什么整个代码的其它部分发生,并随时看看其余部分它可能会有所帮助。 该代码是基本按照几乎与原始相同的途径showDialog()的代码。 实施DatePickerDialog.onDateSetListener ,并返回一个新DatePickerDialog ,具有明显的异常使用DialogFragment其那。 但是,这就是我已经迷路。

部分原因是因为我真的不知道哪里 onCreateDialog()返回一个新DatePickerDialog。 如果你看一下代码,我说没有道理的,既mDateDetailFragmentgetSupportFragmentManager()从未被实例化或出现其他地方,所以我不能让教程代码甚至工作。 Android的文件还提到,而不是使用showDialog()我应该是同时使用DialogFragmentFragmentManager ,也不会在这里完成。 只有DialogFragment。

因此,如标题,我究竟可以在非depracted形式DatPicker? 我想请你给给我发来一个链接,只说看这里。 我已经做到了。 相信我。 如果没有,至少说明了什么我已经错过了,让这有意义。 此外,如果有人能真正告诉我在哪里的onCreateDialog()方法发送DatePickerDialog ,这将是非常有帮助。 我只是试图让这一切的感觉,而不是复制和粘贴代码(而不是它的工作原理反正)。 非常感谢您抽出时间来阅读,如果有任何需要澄清,请询问。

Answer 1:

要在您的文章的顺序... \

1) onCreateDialog返回对话框的DialogFragment。

2)我不知道该mDateDetailFragment.updateDate(date); 行......我想他可能已经留下了一些代码。 编辑发现了它,它是在为他的完整演示的zip文件中的一个类。

3)您使用的片段管理器(它的getSupportFragmentManager()部分):

ddf.show(getSupportFragmentManager(), "date picker dialog fragment");

好吧,这么说,这里是如何我已经做到了(我使用DateSlider,但在一个datepicker底涂在它的地方应该是足够简单你)。

在片段/活性调用DialogFragment:

DialogFragment newFragment = new DateDialog();
newFragment.show(getFragmentManager(), "dialog"); 

而我DialogFragment:

public class DateDialog extends DialogFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    private DateSlider.OnDateSetListener mDateSetListener = new DateSlider.OnDateSetListener() {
        public void onDateSet(DateSlider view, Calendar selectedDate) {
            MemberAddFragment.startTxt.setText(String.format("%tB %te, %tY", selectedDate, selectedDate, selectedDate));
        }
    };

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar c = Calendar.getInstance();  // Get calendar instance to use in DateSlider
        return new AlternativeDateSlider(getActivity(),mDateSetListener,c,null,null);  // return DateSlider dialog to DialogFragment
    }
}

希望这有助于清理你的困惑。



Answer 2:

我知道这个问题是我的,已经有一个答案。 但我想我会我自己的答案添加到别人找上同样的问题的帮助。 我已经简化,我的上方设置成只有2类的示例代码。 Kbeal,谁是彬彬有礼地提供教程做的非常出色,但它是与甚至没有必要的信息过于臃肿。 所以,使用的是什么我知道的对话和我从什么我可以从Kbeal的教程以及我对片段做了调查了解得知,我已经提供了从DatePickerDialog在我的GitHub我的实现。

https://github.com/Zeroe31890/DateDialogFragment

所有你真的需要做的就是运行它直后,才复制和粘贴2班,单布局,并修改了Android清单文件。 远远高于任何其他教程更容易。 哦,如果有人看到什么可以做的更好就可以了,请做。 请享用!



Answer 3:

这里的帖子作者:听起来你拥有了一切想通了。 我发现这虽然巴拉克不回答他们的精细作业之前回答您的问题在我的岗位。 如果你还没有这样做已经下载的示例应用程序的完整源代码。 我认为这将有助于填补任何缺失的空白,你仍然有。



文章来源: How to make a DatePicker with DialogFragment and FragmentManager?