【发布时间】:2015-07-25 02:29:32
【问题描述】:
我的问题是 onDateSet 方法,我如何从我的 textview 字段上的 datepicker 对话框中检索选定的日期,这是一个嵌入在弹出窗口中的活动。我得到空指针异常: ((TextView) getActivity().findViewById(R.id.spinner_date)).setText("Date"+year);
DatePickerFragment.java
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);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
Log.w("DatePicker", "Date = " + year);
((TextView) getActivity().findViewById(R.id.spinner_date)).setText("Date"+year);
}
}
在 MainActivity.java 中
public void createVideoEvent(View arg0) {
LayoutInflater layoutInflater
= (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
popupView = layoutInflater.inflate(R.layout.activity_event_create, null);
final PopupWindow popupWindow = new PopupWindow(
popupView,
400,
LayoutParams.WRAP_CONTENT);
View new_event_button = (View) findViewById(R.id.button);
popupWindow.showAsDropDown(new_event_button);
dateSpinner = (TextView) popupView.findViewById(R.id.spinner_date);
View.OnTouchListener Spinner_OnTouch = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
showDatePickerDialog(v);
}
return true;
}
};
View.OnKeyListener Spinner_OnKey = new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
showDatePickerDialog(v);
return true;
} else {
return false;
}
}
};
dateSpinner.setOnTouchListener(Spinner_OnTouch);
dateSpinner.setOnKeyListener(Spinner_OnKey);
SimpleDateFormat sdf = new SimpleDateFormat("cccc, MMMM dd, yyyy", Locale.US);
dateSpinner.setText(sdf.format(myCalendar.getTime()));
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "Date");
}
【问题讨论】:
标签: android