java - 无法创建日期选择器对话框

标签 java android

我在我的 Activity 中使用了一个类来创建一个日期选择器对话框,它一直在工作,直到我迁移到 android studio。 这是类(class):

class StartDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener{
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // year, month, day από το onCreate
        DatePickerDialog dialog = new DatePickerDialog(Add_Expense.this, this, year, month, day);
        //DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth);
        return dialog;

    }
    @Override
    public void onDateSet(DatePicker view, int year, int month,``
            int day) {
        processDate(year, month, day);

    }
    private void processDate(int year, int month, int day) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month);
        cal.set(Calendar.DAY_OF_MONTH, day);
        int day_ofWeeks = cal.get(Calendar.DAY_OF_WEEK);
        showDate(year, month, day, day_ofWeeks);
    }
}


        public void showDatePickerDialog(View v) {
    DialogFragment newFragment = new StartDatePicker();
    newFragment.show(getFragmentManager(), "start_date_picker");
}

StartDatePicker 类现在引发错误:此 fragment 类应该是公共(public)的。在我将其声明为 public 后,它引发了另一个错误:这个 fragment 内部类应该是静态的。 我不想将其声明为静态,因为 private void showDate(int year, int month, int day, int day_ofWeek) 将不起作用。

提前谢谢你。

最佳答案

可能有更简洁的方法来执行此操作,但是,如果您将 StartDatePick 设置为公开和静态,那么您可以这样做:

在 StartDatePicker 中创建一个字段来保存对外部类的引用

OuterClassType  mDateShower;

并为该字段创建一个 setter。

public void setDateShower(OuterClassType dateShower) {
    mDateShower = dateShower;
}

然后将对 showDate(....); 的调用替换为 mDateShower.showDate(...);

最后设置dateShower

public void showDatePickerDialog(View v) {
    DialogFragment newFragment = new StartDatePicker();
    newFragment.setDateShower(this);
    newFragment.show(getFragmentManager(), "start_date_picker");
}

关于java - 无法创建日期选择器对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266301/

相关文章:

java - 如何使用 Weka API 请求单个属性的输入以遍历决策树?

android - 当路径上的第一项为空时,与路径的绑定(bind)不起作用

android - Google Play - 我的应用按月订阅每天收费

java - 添加到 eclipse 项目的外部 jar

java - 读取蓝牙数据并将其放入MainActivity

java - ORA-56721 : I/O data limit exceeded - session terminated

android - 发送 Intent 到 Home 和 Widget Add

android - 如何在拍摄照片后立即在照片上绘图,然后保存到存储空间

java - 如何将本地项目(不是 jar)添加为 Maven 项目的依赖项

java - 如何在 Java 中重命名文件?