Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
在Android中,当最小日期和最大日期相同时,如何设置日期范围?_Android_Date - Fatal编程技术网

在Android中,当最小日期和最大日期相同时,如何设置日期范围?

在Android中,当最小日期和最大日期相同时,如何设置日期范围?,android,date,Android,Date,我正在从arraylist设置日期范围。 当最小和最大日期不同时,它工作正常 当两个日期相同时,问题就出现了 即使最小日期和最大日期相同,是否可以以某种方式设置日期范围? //---- Set Date Range------// SimpleDateFormat sDateFormat = new SimpleDateFormat("MM/dd/yyyy"); Date fromDateRange = null ;

我正在从arraylist设置日期范围。 当最小和最大日期不同时,它工作正常

当两个日期相同时,问题就出现了

即使最小日期和最大日期相同,是否可以以某种方式设置日期范围?

            //---- Set Date Range------//
            SimpleDateFormat sDateFormat = new SimpleDateFormat("MM/dd/yyyy");
            Date fromDateRange = null ;
            Date toDateRange = null ;
            try {
                fromDateRange = sDateFormat.parse(dateFilters.get(i).getFromDate());
                toDateRange = sDateFormat.parse(dateFilters.get(i).getToDate());
            } catch (ParseException e) {}
            fromDateFragment.setDateRange(fromDateRange.getTime(), toDateRange.getTime()); // setDateRange is a custom method of my DatePickerFragment class   .

            //------------------------//
DatePickerFragment.java

package com.example.component;

import java.util.Calendar;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.os.Bundle;
import android.widget.DatePicker;


public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    onDateSet mOnDateSet;
    DatePickerDialog datePickerDialog;

    public DatePickerFragment(Context context){

        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        // Create a new instance of DatePickerDialog and return it
        datePickerDialog = new DatePickerDialog(context, this, year, month, day);
    }

    public DatePickerFragment(){}

    public void setDateListener(onDateSet mOnDateSet) {
        this.mOnDateSet = mOnDateSet;
    }

    public interface onDateSet {
        public void onDate(int year, int monthOfYear,
                int dayOfMonth);
    }
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker

        return datePickerDialog;
    }

    public void setDateRange(long minDate, long maxDate){
        datePickerDialog.getDatePicker().setMinDate(minDate);
        datePickerDialog.getDatePicker().setMaxDate(maxDate);

    }

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {

        if(view.isShown()){
            dismiss();
            mOnDateSet.onDate(year, monthOfYear+1, dayOfMonth);
        }
    }

}
Logcat:-

02-25 02:08:04.569: E/AndroidRuntime(8385): FATAL EXCEPTION: main
02-25 02:08:04.569: E/AndroidRuntime(8385): java.lang.NullPointerException
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.CalendarView.onScroll(CalendarView.java:1224)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.CalendarView.access$900(CalendarView.java:76)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.CalendarView$2.onScroll(CalendarView.java:1085)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1520)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.ListView.layoutChildren(ListView.java:1707)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.AbsListView.onLayout(AbsListView.java:2300)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1644)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1428)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.View.layout(View.java:14067)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewGroup.layout(ViewGroup.java:4376)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1986)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1807)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4464)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.Choreographer.doCallbacks(Choreographer.java:555)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.Choreographer.doFrame(Choreographer.java:525)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.os.Handler.handleCallback(Handler.java:615)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.os.Looper.loop(Looper.java:137)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at android.app.ActivityThread.main(ActivityThread.java:4895)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at java.lang.reflect.Method.invokeNative(Native Method)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at java.lang.reflect.Method.invoke(Method.java:511)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
02-25 02:08:04.569: E/AndroidRuntime(8385):     at dalvik.system.NativeStart.main(Native Method)

几天前,我也面临着同样的问题

我为特定日期设定了最短和最长时间,并为我设定了工作罚款

Calendar mCalendarMax = Calendar.getInstance();
// Set your day - month - year here
mCalendarMax.set(Integer.parseInt(dateMaxData[2]), Integer.parseInt(dateMaxData[1]), Integer.parseInt(dateMaxData[0])); 
mCalendarMax.set(Calendar.HOUR_OF_DAY, mCalendarMax.getMaximum(Calendar.HOUR_OF_DAY));
mCalendarMax.set(Calendar.MINUTE, mCalendarMax.getMaximum(Calendar.MINUTE));
mCalendarMax.set(Calendar.SECOND, mCalendarMax.getMaximum(Calendar.SECOND));
mCalendarMax.set(Calendar.MILLISECOND, mCalendarMax.getMaximum(Calendar.MILLISECOND));


Calendar mCalendarTo = Calendar.getInstance();
// Set your day - month - year here
mCalendarTo.set(Integer.parseInt(dateData[2]),Integer.parseInt(dateData[1]),Integer.parseInt(dateData[0]));

mCalendarTo.set(Calendar.HOUR_OF_DAY, mCalendarTo.getMinimum(Calendar.HOUR_OF_DAY));
mCalendarTo.set(Calendar.MINUTE, mCalendarTo.getMinimum(Calendar.MINUTE));
mCalendarTo.set(Calendar.SECOND, mCalendarTo.getMinimum(Calendar.SECOND));
mCalendarTo.set(Calendar.MILLISECOND, mCalendarTo.getMinimum(Calendar.MILLISECOND));
使用上述日历的毫秒,而不是日期

fromDateFragment.setDateRange(mCalendarTo.getTimeInMillis(), mCalendarMax.getTimeInMillis());

显示logcat错误和setDateRange方法尝试从DateFragment.setDateRange(fromDateRange.getTime()-1000,ToDaterRange.getTime())调用此
添加了logcat和
setDateRange
方法已经存在there@RahulGupta但是,当两个日期相同时,为什么要显示日期选择器呢??只显示警报对话框而不是datepickerIt在我的功能中可以显示一个范围为1天或100天的日期选择器。因此,日期选择器应该只显示一天,其余部分将立即淡出,就像正常日期范围一样。我进行了调试,每当我将数据范围设置为小于10时,它都会崩溃。日期范围可能至少有一天。您能告诉我一个示例或一个链接,它实现了一个带有日期范围的日期选择器对话框吗?