我正在开发一款Android应用。它使用'datepicker'作为数据输入表单的一部分。我编写了一个getter方法"onDateSet"
来从对象返回数据,但是我无法从类的实例中调用该方法。
行:datePicker.getSelectedDate();
我收到的'方法无法解决'错误
当我尝试直接访问变量时,我收到相同的消息。 datePicker.selecteddate
如果有人能指出我正确的方向,我将不胜感激。
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
int selectedDate;
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
selectedDate = day+month+year;
}
public int getSelectedDate() {
return selectedDate;
}
}
public void showDatePickerDialog(View view) {
DialogFragment datePicker = new DatePickerFragment();
datePicker.show(getFragmentManager(), "datePicker");
int output = datePicker.getSelectedDate();
}
答案 0 :(得分:0)
你有:
DialogFragment datePicker = new DatePickerFragment();
你的意思是:
DatePickerFragment datePicker = new DatePickerFragment();
这是因为您的方法是子类DatePickerFragment
的成员,而不是基类DialogFragment
的成员。
本质上,当您通过其基类型引用对象时,编译器只知道基类型声明的方法。它无法知道任意DialogFragment
实际上是DatePickerFragment
(或任何其他派生类型)。
另一种选择,如果您知道是DatePickerFragment
,则明确将datePicker
投射到DatePickerFragment
:
DialogFragment datePicker = new DatePickerFragment();
...
int output = ((DatePickerFragment)datePicker).getSelectedDate();
如果ClassCastException
实际上不是datePicker
,这当然会失败DatePickerFragment
。