无法让日期选取器选择当前日期 (ANDROID),保持上个月已启用



我设法获得了仅显示上个月的日期选择器,但是我的光标默认选择上个月的日期,有人可以帮助我解决这个问题吗?我希望上个月可见,光标在打开时选择当前日期。

请帮忙,提前谢谢...

这是我的代码

public class SearchFragment extends Fragment {

    ListView lstv22;
    ArrayList<AshTable2> array222;
    EditText inputSearch1;
    CustomListViewAdapter2 adapter2;
    int day1, month1, year1;
    private int mYearIni, mMonthIni, mDayIni, sYearIni, sMonthIni, sDayIni, mYearIni1, mMonthIni1, mDayIni1, sYearIni2, sMonthIni2, sDayIni2, mYearIni3, mMonthIni3, mDayIni3;
    Calendar C = Calendar.getInstance();
    TextView noSearch;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.search_fragment,
                container, false);

//        sMonthIni = C.get(Calendar.MONTH);
//        sDayIni = C.get(Calendar.DAY_OF_MONTH);
//        sYearIni = C.get(Calendar.YEAR);

        getActivity().setTitle("Search");
        array222 = new ArrayList<>();
        lstv22 = (ListView) view.findViewById(R.id.lst_vw2);
        inputSearch1 = (EditText) view.findViewById(R.id.inputSearch1);
        noSearch = (TextView) view.findViewById(R.id.noSearch);

        inputSearch1.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable arg) {
                // TODO Auto-generated method stub
                String text = inputSearch1.getText().toString().toLowerCase(Locale.getDefault());
                adapter2.filter(text);
                listCheck();

            }
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                                          int arg2, int arg3) {
                // TODO Auto-generated method stub
            }
            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
            }
        });
        adapter2 = new CustomListViewAdapter2(getActivity(), R.layout.home_list_view, array222);

        lstv22.setAdapter(adapter2);

        inputSearch1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(inputSearch1.getWindowToken(), 0);
//                final Calendar cal = Calendar.getInstance();
//                mYearIni=cal.get(Calendar.YEAR);
//                mMonthIni=cal.get(Calendar.MONTH);
//                mDayIni=cal.get(Calendar.DAY_OF_MONTH);
                showDispatchCalendar();
            }
        });

        return view;

    }

    private void showDispatchCalendar() {
        Calendar c1 = Calendar.getInstance();
        DatePickerDialog da = new DatePickerDialog(getActivity(), mDateSetListener, mYearIni, mMonthIni, mDayIni);
        c1.add(Calendar.MONTH, -1);
//        long currentTime = new Date(System.currentTimeMillis()).getTime();
//        Date newDate = new Date(currentTime - 29 * 24 * 3600 * 1000);
        da.getDatePicker().setMinDate(new Date(System.currentTimeMillis()).getTime());
        da.show();
//        long newDate = System.currentTimeMillis();
//        da.getDatePicker().setMinDate(newDate);
//        da.getDatePicker().setMinDate(newDate);
        da.show();
    }

    private void colocar_fecha() {
        day1 = mDayIni;
        month1 = mMonthIni + 1;
        year1 = mYearIni;
        inputSearch1.setText(day1 + "-" + month1 + "-" + year1 + " ");
    }

    private DatePickerDialog.OnDateSetListener mDateSetListener =
            new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    mYearIni = year;
                    mMonthIni = monthOfYear;
                    mDayIni = dayOfMonth;
                    colocar_fecha();
                }
            };


    public void listCheck() {
        if (adapter2.getCount() != 0) {
            noSearch.setText(" ");
        } else {
            noSearch.setText(" No Search Result Found ");
        }
    }

}

像这样尝试

long currentTime = new Date(System.currentTimeMillis()).getTime();
Date newDate = new Date(currentTime - 29 * 24 * 3600 * 1000); //Subtract 30 days

在您的代码中设置此日期。

da.getDatePicker().setMinDate(newDate.getTime());
da.show();

希望它能帮助你,检查并让我结

编辑

Calendar c = Calendar.getInstance();
DatePickerDialog dd = new DatePickerDialog(activity,
            new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    try {
                        // Do your stuff
                    } catch (Exception ex) {
                    }
                }
            }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
dd.show();

在调用showDispatchCalendar()之前添加这个...

final Calendar cal = Calendar.getInstance();
            mYearIni=cal.get(Calendar.YEAR);
            mMonthIni=cal.get(Calendar.MONTH);
            mDayIni=cal.get(Calendar.DAY_OF_MONTH);

首先创建日期选择器类,如下所示:

public class DatePickerFragment extends DialogFragment {
DatePickerDialog.OnDateSetListener ondateSet;
private int year, month, day;
public DatePickerFragment() {}
public void setCallBack(DatePickerDialog.OnDateSetListener ondate) {
    ondateSet = ondate;
}
@SuppressLint("NewApi")
@Override
public void setArguments(Bundle args) {
    super.setArguments(args);
    year = args.getInt("year");
    month = args.getInt("month");
    day = args.getInt("day");
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    return new DatePickerDialog(getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT, ondateSet, year, month, day);
}

}

然后在任何类中使用它作为:

private void showDatePicker() {
    DatePickerFragment date = new DatePickerFragment();
    /**
     * Set Up Current Date Into dialog
     */
    Calendar calender = Calendar.getInstance();
    Bundle args = new Bundle();
    args.putInt("year", calender.get(Calendar.YEAR));
    args.putInt("month", calender.get(Calendar.MONTH));
    args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
    date.setArguments(args);
    /**
     * Set Call back to capture selected date
     */
    date.setCallBack(ondate1);
    date.show(getActivity().getFragmentManager(), "Date Picker");
}
public String checkDigit(int number) {
    return number <= 9 ? "0" + number : String.valueOf(number);
}
DatePickerDialog.OnDateSetListener ondate = new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int year, int monthOfYear,
                          int dayOfMonth) {
        etDob.setText(String.valueOf(checkDigit(dayOfMonth)) + "/" + String.valueOf(checkDigit(monthOfYear + 1))
                + "/" + String.valueOf(year));
    }
};

这样,您将始终获得当前日期。

祝你好运!

试试这个:

 // Use the current date as the default date in the picker
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH) + 1;
            int day = c.get(Calendar.DAY_OF_MONTH);
            Log.e("DialogMonth", ""+month);

最新更新