1
我想创建一个自定义日期选择器按钮组件。按钮显示日期,点击时打开日期选择器对话框。我已经实现了使用Android开发文档/教程的这种方法,但是我的代码中有2个,我认为创建一个名为DateButton的自定义类可以更好地清理我的代码。所以,无论何时我需要类似的按钮,我都可以在XML中创建一个DateButton。不管怎么说,这是我第一次创建自定义视图,我需要一些帮助,每当我尝试我的自定义按钮添加到我的布局,我得到一个错误:自定义DatePicker按钮。 Android中的自定义组件
error! ClassNotFoundException: android.app.DatePickerDialog$OnDateSetListener
这里就是我想要的按钮来看看(极简单)
,当它被点击它会弹出内置android的日期选择器对话框:
这里是我的这个自定义datebutton当前代码:
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
public class DateButton extends Button implements OnClickListener, OnDateSetListener {
private static final int DATE_DIALOG_ID = 0;
private int mYear;
private int mMonth;
private int mDay;
private OnDateSetListener mDateSetListener;
public DateButton(Context context) {
super(context);
}
public DateButton(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
}
public DateButton(Context arg0, AttributeSet arg1, int arg2) {
super(arg0, arg1, arg2);
}
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
private DatePickerDialog showDialog(int dateDialogId) {
return new DatePickerDialog(getContext(),
mDateSetListener,
mYear, mMonth, mDay);
}
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
updateDisplay();
}
private void updateDisplay() {
this.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(pad(mMonth + 1)).append("/")
.append(pad(mDay)).append("/")
.append(mYear).append(" "));
}
//if single digit append "0" to the number
private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
}
编辑:我仍然在运行陷入困境的人有一些类似的的例子? 感谢您的帮助!
我会在onClick中调用什么? –
@IZI_Shadow_IZI对于以前的代码抱歉,我对'Activity'感到困惑。检查新的。 – jamapag
与showDialog方法相同的错误消息。仍然没有找到classNotFound –