Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从helper类调用DatePicker到android活动_Java_Android_Interface_Datepickerdialog - Fatal编程技术网

Java 从helper类调用DatePicker到android活动

Java 从helper类调用DatePicker到android活动,java,android,interface,datepickerdialog,Java,Android,Interface,Datepickerdialog,我在我的一个活动中使用DatePickerDialog,它工作得很好,但现在我必须在许多活动中实现它,所以我想把它放在一个助手类中,并将该函数扩展到所有活动中,作为良好的代码实践。我创建了一个接口,但无法正确使用它。我看到了stackoverflow上的另一个链接,但已结束它们是从一个类扩展到另一个类,而不是活动。我想要的是我有一个助手类,在这个类中我放置了我在应用程序中反复使用的多个函数,然后根据需要将它们扩展到任何活动。所以我想将这个日期选择器函数放在HelperClass中,然后在任何地方

我在我的一个活动中使用DatePickerDialog,它工作得很好,但现在我必须在许多活动中实现它,所以我想把它放在一个助手类中,并将该函数扩展到所有活动中,作为良好的代码实践。我创建了一个接口,但无法正确使用它。我看到了stackoverflow上的另一个链接,但已结束它们是从一个类扩展到另一个类,而不是活动。我想要的是我有一个助手类,在这个类中我放置了我在应用程序中反复使用的多个函数,然后根据需要将它们扩展到任何活动。所以我想将这个日期选择器函数放在HelperClass中,然后在任何地方获取这个函数谢谢

这是我的datePicker函数,目前Iam正在活动中使用它,并且工作正常

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的逻辑