【问题标题】:Using datepicker in BaseAdapter for a Fragment在 BaseAdapter 中为 Fragment 使用 datepicker
【发布时间】:2016-04-17 03:14:52
【问题描述】:

我在 BaseAdapter 中的代码如下

    date.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            ((Fragment)UserRequests.this.context).showDialog(999);//Error
        }
    });

要显示日期选择器,我们需要以下代码

protected Dialog onCreateDialog(int id) {
    // TODO Auto-generated method stub
    if (id == 999) {
        return new DatePickerDialog(context, myDateListener, year, month, day);
    }
    return null;
}

private DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
        // TODO Auto-generated method stub
        // arg1 = year
        // arg2 = month
        // arg3 = day
        showDate(arg1, arg2+1, arg3);
    }
};

private void showDate(int year, int month, int day) {
    date.setText(new StringBuilder().append(day).append("/")
            .append(month).append("/").append(year));
}

这段代码有两个问题。首先,我想在一个名为 UserRequests 的片段中显示一个日期选择器。我做不到。我已经尝试过如下。

((Fragment)UserRequests.this.context).showDialog(999);

第二个是我收到一个警告说 onCreateDialog 方法从未使用过。请解释一下。如何解决这个问题。提前致谢。

【问题讨论】:

    标签: android android-fragments datepicker baseadapter


    【解决方案1】:

    您需要从 DialogFragment 扩展 UserRequests 并按以下方式覆盖 onCreateDialog。

    @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
         //do something
        }
    

    更多信息在documentation

    【讨论】:

    • 一个名为 FeedListAdapter 的类扩展了 BaseAdapter,而 UserRequest 是一个扩展了 Fragment 的类。从 BaseAdapter 类中,我需要在 UserRequest Fragment 中获取 DatePicker。还有一个问题,我们可以在扩展 BaseAdapter 的类中使用 Bundle。
    • 你可以在 UserRequest 中创建另一个类(比如 DatePickerFragment)来扩展 DialogFragment。在 showDialog 中,您可以创建 DatePickerFragment 的实例并使用它。 Bundle 不是从 BaseAdapter 传递的。但如果需要,您可以创建和处理它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多