私はAndroidを初めて使用しますが、Androidに適用されるコンテキストが何であるかを完全には理解していないことを認めます。少しはわかりますが、完全ではありません。DatePickerDialogに日と月のみが含まれるように、AndroidDatepickerを変更しようとしています。私はstackoverflowに質問し、3つのコードブロックの形で1つの答えが与えられました。コードは以下のとおりです。私の問題は、、、...で1つのエラーが発生することです
mDialog = new CustomDPDialog(getContext()
。this
エラーは。で発生しgetContext()
ます。それは、に対してgetContext()
未定義であると言いonClickListener
ます。それで、以下のコードを見て、修正は何でしょうgetContext()
か?メソッドを作成すると、getContext()
実際にはコードがさらに悪くなります。そして、コンテキストを使用して、エラーの代わりにnullを使用するとgetContext(), this,
、エラーが消去されますが、nullであってはならず、。である必要がありますthis
。
static final int ID_DATEPICKER = 0;
private int myYear, myMonth, myDay;
TextView dateDisplay;
Dialog mDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dateDisplay = (TextView)findViewById(R.id.dateDisplay);
Button datePickerButton = (Button)findViewById(R.id.datepickerbutton);
datePickerButton.setOnClickListener(datePickerButtonOnClickListener);
}
private Button.OnClickListener datePickerButtonOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View v) {
final Calendar c = Calendar.getInstance();
mDialog = new CustomDPDialog(getContext(), this,
c.get(Calendar.YEAR), c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH));
mDialog.show();
DatePicker dp = findDatePicker((ViewGroup) mDialog.getWindow().getDecorView());
if (dp != null) {
((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
}
}
class CustomDPDialog extends DatePickerDialog {
public CustomDPDialog(Context context,
OnDateSetListener callBack, int myYear, int myMonth,
int myDay) {
super(context, callBack, myYear, myMonth, myDay);
}
@Override
public void onDateChanged(DatePicker view, int year, int month, int day) {
super.onDateChanged(view, year, month, day);
mDialog.setTitle((month + 1) + "-" + day + "-");
}
}
private DatePicker findDatePicker(ViewGroup group) {
if (group != null) {
for (int i = 0, j = group.getChildCount(); i < j; i++) {
View child = group.getChildAt(i);
if (child instanceof DatePicker) {
return (DatePicker) child;
} else if (child instanceof ViewGroup) {
DatePicker result = findDatePicker((ViewGroup) child);
if (result != null)
return result;
}
}
}
return null;
}
};
}