【问题标题】:DialogFragment not showDialogFragment 不显示
【发布时间】:2018-04-10 07:00:14
【问题描述】:

我想在我的 Fragment Home 中显示我的 DialogFragment,我已经制作了 DialogFragment 并制作了类 SelectDateFragment,但是当我运行我的应用程序时,它什么也没发生,没有错误 我的 Onclick 文本视图以显示对话框片段

void onClickDate(View view){
    txtDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            try{
                DialogFragment newFragment= new SelectDateFragment();
                newFragment.show(getFragmentManager(),"DatePicker");
            }
            catch (Exception e){
                e.toString();
            }
        }
    });
}

我的选择日期片段

public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

    @RequiresApi(api = Build.VERSION_CODES.N)
    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar calendar = Calendar.getInstance();
        int yy = calendar.get(Calendar.YEAR);
        int mm = calendar.get(Calendar.MONTH);
        int dd = calendar.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(), this, yy, mm, dd);
    }

    public void onDateSet(DatePicker datePicker, int yy, int mm, int dd) {
        populateSetDate(yy,mm+1,dd);
    }
    public void populateSetDate(int year, int month, int day) {
        txtDate.setText(month+"/"+day+"/"+year);
    }
}

【问题讨论】:

  • 你想只显示日期选择器吗?
  • 是的,只有日期选择器
  • onClickDate(View view) 什么时候执行?
  • 是的,日期选择器没有显示
  • try 中的代码没有被执行。确保在正确的地方写正确的东西。

标签: android datepicker fragment


【解决方案1】:

使用这个

 private void openDatePicker() {
    Calendar calendar = Calendar.getInstance();
    DatePickerDialog d = new DatePickerDialog(activity, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int year, int month, int day) {

            month = month + 1;
            String date = month + "/" + day + "/" + year;
            editDob.setText(date);
        }
    }, calendar
            .get(Calendar.YEAR), calendar.get(Calendar.MONTH),
            calendar.get(Calendar.DAY_OF_MONTH));
    d.getDatePicker().setMinDate(System.currentTimeMillis());
    d.show();
}

【讨论】:

  • 可以了,为什么不能选择这一天之后的日期?我想选择这一天之后的日期并在这一天之前禁用,你能帮我吗?
【解决方案2】:

使用下面的方法选择用户当前日期之后和之前的日期被禁用..

 /**
 * this method used show date picker.
 * and user select current date after.
 * before data are disable.
 */
private void selectDate() {
    Calendar calendar = Calendar.getInstance();
    DatePickerDialog d = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int year, int month, int day) {

            month = month + 1;
            String date = month + "/" + day + "/" + year;
            Log.d("Date::",date);
        }
    }, calendar
            .get(Calendar.YEAR), calendar.get(Calendar.MONTH),
            calendar.get(Calendar.DAY_OF_MONTH));
    d.getDatePicker().setMinDate(System.currentTimeMillis()-1000);
    d.show();
}

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多