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

时间:2015-02-01 18:36:40

标签: java android

我在我的活动中使用了一个类来创建一个datepicker对话框,它一直在工作,直到我迁移到android studio。 这是班级:

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现在引发错误:此片段类应该是公共的。在我将其声明为public之后,它会引发另一个错误:此片段内部类应该是静态的。 我不想将其声明为静态因为私有void showDate(int year,int month,int day,int day_ofWeek)将无效。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

有一种更简洁的方法可以做到这一点但是,如果你将StartDatePick设为public和static,那么你可以这样做:

在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");
}