Я новичок в андроиде, и я признаю, что не совсем понимаю, какой контекст применим к Android. Я понимаю немного, но не полностью. Я пытаюсь изменить Android Datepicker так, чтобы только день и месяц были в DatePickerDialog. Я попросил stackoverflow, и мне дали один ответ в виде трех кодовых блоков. Код ниже. Я проблема: я получаю одну ошибку на mDialog = new CustomDPDialog(getContext()
, this
, ... ошибка на getContext()
. В нем указано, что getContext()
не определено для onClickListener
. Итак, глядя на приведенный ниже код, каково было бы исправление для getContext()
? Создание метода getContext()
действительно ухудшает код. И используя контекст, null вместо getContext(), this,
стирает ошибку, но она не должна быть нулевой, она должна быть this
.Контекст в Android DatePicker
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;
}
};
}
nope, ни один не работал. Но я вижу, где вы идете с вашими рассуждениями. Я не думаю, что v.getContext работает, потому что он не хочет контекста представления, я думаю, что он хочет контекста DatePicker. Итак, теперь я пытаюсь использовать все переменные вместо v. Thaks для помощи! – kirktoon1882
hmmm ... Я бы подумал, что v.getContext() будет работать в любом случае. Хорошо, дайте мне знать, что закончилось работой! – ByteMe
со всеми предложениями Eclipse говорит: «Метод getContext (View.OnClickListener) не определен для нового типа View.OnClickListener() {}« Я не понимаю, какой бит кода не определен. – kirktoon1882