【问题标题】:call DatePicker from helper class to an android activity从帮助类调用 DatePicker 到 android 活动
【发布时间】:2019-11-29 07:29:17
【问题描述】:

我在我的一项活动中使用 DatePickerDialog 并且它工作正常,但现在我必须在许多活动中实现它,所以我想把它放在一个帮助类中并将该功能扩展到所有活动作为良好的代码实践。我创建了一个接口,但无法正确使用它。我在stackoverflow上看到了另一个链接,但在那里它们从一个类扩展到另一个类而不是活动。我想要的是我有一个帮助类,我在其中放置了多个函数我在我的应用程序中反复使用,然后根据要求将它们扩展到任何活动。所以我想将此日期选择器函数放在 HelperClass 中,然后在应用程序中的任何位置获取此函数。谢谢

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

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

}

【问题讨论】:

    标签: java android interface datepickerdialog


    【解决方案1】:

    我认为,最好的方法是这样

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

    【讨论】:

    • 使用这个只显示日历我应该如何在另一个活动中的editText中选择日期
    • 更改了函数,现在您可以将editText传递给函数,因此,所有选择的值都将显示在editText中
    • 谢谢它的工作,如果我必须使用接口来实现它,你能指导我吗
    • 接口,只会给你一个添加函数名datePicker的选项,但是你必须在新的类中一次又一次地编写datePicker的逻辑
    【解决方案2】:

    只需要创建一个接口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();
            }
    }
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      相关资源
      最近更新 更多