Java 从helper类调用DatePicker到android活动
我在我的一个活动中使用DatePickerDialog,它工作得很好,但现在我必须在许多活动中实现它,所以我想把它放在一个助手类中,并将该函数扩展到所有活动中,作为良好的代码实践。我创建了一个接口,但无法正确使用它。我看到了stackoverflow上的另一个链接,但已结束它们是从一个类扩展到另一个类,而不是活动。我想要的是我有一个助手类,在这个类中我放置了我在应用程序中反复使用的多个函数,然后根据需要将它们扩展到任何活动。所以我想将这个日期选择器函数放在HelperClass中,然后在任何地方获取这个函数谢谢 这是我的datePicker函数,目前Iam正在活动中使用它,并且工作正常Java 从helper类调用DatePicker到android活动,java,android,interface,datepickerdialog,Java,Android,Interface,Datepickerdialog,我在我的一个活动中使用DatePickerDialog,它工作得很好,但现在我必须在许多活动中实现它,所以我想把它放在一个助手类中,并将该函数扩展到所有活动中,作为良好的代码实践。我创建了一个接口,但无法正确使用它。我看到了stackoverflow上的另一个链接,但已结束它们是从一个类扩展到另一个类,而不是活动。我想要的是我有一个助手类,在这个类中我放置了我在应用程序中反复使用的多个函数,然后根据需要将它们扩展到任何活动。所以我想将这个日期选择器函数放在HelperClass中,然后在任何地方
public void datePicker(int day,int month,int year) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
final Calendar myCalendar = Calendar.getInstance();
year = myCalendar.get(Calendar.YEAR);
month = myCalendar.get(Calendar.MONTH);
day = myCalendar.get(Calendar.DAY_OF_MONTH);
}
picker = new DatePickerDialog(RequestTraining.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
}, year, month, day);
picker.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
picker.show();
}
这是我制作的界面
public interface DatePickerListener {
public void onDate(DatePicker view, int year, int monthOfYear, int dayOfMonth);
}
我想,最好的办法就是这样
class Utils {
public void datePicker(Context mContext, EditText et) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
final Calendar myCalendar = Calendar.getInstance();
year = myCalendar.get(Calendar.YEAR);
month = myCalendar.get(Calendar.MONTH);
day = myCalendar.get(Calendar.DAY_OF_MONTH);
}
picker = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
et.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year);
}
}, year, month, day);
picker.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
picker.show();
}
}
现在只要从任何类调用这个方法,比如
Utils.datePicker(this, editText);
只需要做一个接口回调,并在所有需要回调的活动中实现它。然后,您需要在实现回调接口的活动中重写onDateSelected(字符串日期)方法。只要在需要的地方调用Utils.datePicker(this)
interface callBack{
onDateSelected(String date);
}
class Utils {
public static void datePicker(callBack call) {
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.N)
{
final Calendar myCalendar = Calendar.getInstance();
year = myCalendar.get(Calendar.YEAR);
month = myCalendar.get(Calendar.MONTH);
day = myCalendar.get(Calendar.DAY_OF_MONTH);
}
picker = new DatePickerDialog(RequestTraining.this, new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int
dayOfMonth) {
trainingDate = dayOfMonth + "/" + (monthOfYear + 1) + "/" + year;
call.onDateSelected(trainingDate);
}
}, year, month, day);
picker.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
picker.show();
}
}
希望它能对您有所帮助。使用此功能仅显示日历如何在另一个活动中显示editText中选择的日期更改了函数,现在您可以将editText传递给函数,因此,所有选择的值都将显示在editTextthanku-it-working中,如果我必须使用接口来实现它,你能指导我这个接口吗,它只会给你一个选项来添加一个函数名datePicker,但是你必须在新的类中一次又一次地编写datePicker的逻辑