我做这个已经有一段时间了,但似乎无法弄清楚。我对Android开发不太熟悉,请谅解。我之前不太了解如何创建日期选择器,所以学会了使用过时的方法来试试。我用了这篇教程来加快速度:
http://developer.android.com/resources/tutorials/views/hello-datepicker.html
但现在我需要改变它,主要是不再使用过时的代码,所以我四处寻找,找到了两篇教程,尤其是这一篇:
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的位置。如果您查看我说不合理的代码,mDateDetailFragment和getSupportFragmentManager()都没有被实例化或出现在其他任何地方,所以我无法使教程代码正常工作。Android文档还提到,应该使用DialogFragment和FragmentManager而不是使用showDialog(),但此处只使用了DialogFragment。所以,像标题一样,我应该如何以非过时的形式创建DatPicker?我请不要让我去链接,只是说看这里。我已经这样做了。相信我。如果没有,至少解释一下我错过了什么,使这一切都有意义。另外,如果有人能告诉我onCreateDialog()方法将DatePickerDialog发送到哪里,那将非常有帮助。我只是想弄清楚所有这些,而不是复制和粘贴代码(即使它也无法工作)。非常感谢您抽出时间阅读这篇文章,如果需要任何澄清,请询问。
getSupportFragmentManager()
是如何获取FragmentManager的?这个在他的代码中吗?我应该已经注意到了。我感觉自己太蠢了。 - AndygetFragmentManager
。无论使用哪个版本,都是调用框架来提供片段管理器。 - Barak