【发布时间】:2016-01-02 14:23:27
【问题描述】:
我想在单击图像按钮时弹出一个日期选择器对话框,然后用户选择的日期将显示在编辑文本字段中。我按照Android开发人员的指南通过DialogFragment使用,成功弹出日期选择器对话框。用户可以在对话框中选择日期,但是当用户按下设置按钮时会崩溃。
事实上,我怀疑这是 onDateSet 中 LayoutInflater 中的 getContext() 的问题,因为有句话说“调用所需的 API 级别 23(当前 API:12)”,但我无法弄清楚如何解决它。
这是Android开发者推荐调用getContext()获取活动上下文,不知道为什么会出现问题。
我尝试使用@TargetApi,但它说这仅用于方法。
谁能告诉我代码中的问题出在哪里?
逻辑上说: java.lang.NoSuchMethodError: com.test.testapplication.DatePickerFragment.getContext
日期选择器片段
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
final Calendar calendar = Calendar.getInstance();
int YEAR;
int MONTH;
int DAY;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
YEAR = calendar.get(Calendar.YEAR);
MONTH = calendar.get(Calendar.MONTH);
DAY = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, YEAR, MONTH, DAY);
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
YEAR = year;
MONTH = monthOfYear;
DAY = dayOfMonth;
String dateFormat = "MM/dd/yy";
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.CHINESE);
View fragment = LayoutInflater.from(getContext()).inflate(R.layout.activity_datepickerdialogfragment, null);
EditText editText = (EditText) fragment.findViewById(R.id.edittext);
editText.setText(sdf.format(calendar.getTime()));
}
}
主活动
public class DPDFActivity extends FragmentActivity {
EditText editText;
ImageButton btn;
DialogFragment datePickerFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_datepickerdialogfragment);
editText = (EditText) findViewById(R.id.edittext);
btn = (ImageButton) findViewById(R.id.btn);
btn.setOnClickListener(new showDateDialog());
}
public class showDateDialog implements View.OnClickListener {
@Override
public void onClick(View v) {
datePickerFragment = new DatePickerFragment();
datePickerFragment.show(getFragmentManager(), "DatePicker");
}
}
}
【问题讨论】:
标签: android