在片段上调用 onDateSet activity
Call onDateSet on a Fragment activity
我在获取片段 activity 上的 DatePickerFragment 信息时遇到问题。
我有这段代码,摘自 Google 开发者页面:
public class DatePickerFragment extends DialogFragment {
@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);
ADD add = new ADD();
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) add.getTargetFragment(), year, month, day);
}}
这是我的 MainActivity,当我收到用户选择的日期时:
public class ADD extends Fragment implements AdapterView.OnItemSelectedListener, DatePickerDialog.OnDateSetListener {
//code
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Log.w("DatePicker", "Date = " + year);
mDateDisplay.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(dayOfMonth).append("-")
.append(monthOfYear + 1).append("-")
.append(year).append(" "));
}}
如果之前有人问过这个问题,我深表歉意。我一直在积极搜索此页面,并且仅针对活动回答了此问题,未针对片段回答。另外,我必须指出,我不是 Java 专家。我的直觉告诉我,问题可能出在DatePickerFragment的'return',但我无法解决问题。
您可能忘记在 ADD
片段中触发 setTargetFragment
方法:
DatePickerFragment datePickerFragment = new DatePickerFragment();
datePickerFragment.setTargetFragment(this, 1234);
datePickerFragment.show(getChildFragmentManager(), "DatePickerFragment TAG");
此外,将 onCreateDialog
方法替换为:
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(), (DatePickerDialog.OnDateSetListener) getTargetFragment(), year, month, day);
我在获取片段 activity 上的 DatePickerFragment 信息时遇到问题。 我有这段代码,摘自 Google 开发者页面:
public class DatePickerFragment extends DialogFragment {
@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);
ADD add = new ADD();
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) add.getTargetFragment(), year, month, day);
}}
这是我的 MainActivity,当我收到用户选择的日期时:
public class ADD extends Fragment implements AdapterView.OnItemSelectedListener, DatePickerDialog.OnDateSetListener {
//code
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Log.w("DatePicker", "Date = " + year);
mDateDisplay.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(dayOfMonth).append("-")
.append(monthOfYear + 1).append("-")
.append(year).append(" "));
}}
如果之前有人问过这个问题,我深表歉意。我一直在积极搜索此页面,并且仅针对活动回答了此问题,未针对片段回答。另外,我必须指出,我不是 Java 专家。我的直觉告诉我,问题可能出在DatePickerFragment的'return',但我无法解决问题。
您可能忘记在 ADD
片段中触发 setTargetFragment
方法:
DatePickerFragment datePickerFragment = new DatePickerFragment();
datePickerFragment.setTargetFragment(this, 1234);
datePickerFragment.show(getChildFragmentManager(), "DatePickerFragment TAG");
此外,将 onCreateDialog
方法替换为:
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(), (DatePickerDialog.OnDateSetListener) getTargetFragment(), year, month, day);