从助手 class 调用 DatePicker 到 android activity

call DatePicker from helper class to an android activity

我在我的一个 activity 中使用 DatePickerDialog 并且它工作正常但现在我必须在许多活动中实现它所以我想把它放在一个助手 class 中并将该功能扩展到all activities as good code practice.I 已经创建了一个接口,但无法使用它 properly.I 在 Whosebug 上看到了另一个 link 但在那里它们是从一个 class 扩展而来的另一个 class 而不是 activity.What 我想要的是我有一个助手 class ,我在其中放置了我在我的应用程序中反复使用的多个功能,然后将它们扩展到任何 activity 根据requirement.So 我想把这个日期选择器函数放在 HelperClass 中,然后在 app.Thanku

中的任何地方获取这个函数

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

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();
   }
}

现在只需从任何 class 调用此方法,例如

Utils.datePicker(this, editText);

只需创建一个接口 callBack 并在您需要回调的所有活动中实现它。然后,您需要在实现 callBack 接口的活动中覆盖 onDateSelected(String date) 方法。只需在您想要的地方调用 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();
        }
}

希望对您有所帮助。