Giter Site home page Giter Site logo

slidedatetimepicker's Introduction

SlideDateTimePicker

AndroidLibs

SlideDateTimePicker is an Android library that displays a single DialogFragment in which the user can select a date and a time. The user can swipe between the DatePicker and TimePicker, and the tab underline will gradually animate as the user swipes. The colors of the tab indicator and divider lines are customizable to fit your project's theme. Tested on Android 4.0+.

Setup

To add this library to your project, add the following to your build.gradle:

dependencies {
    compile project(':slideDateTimePicker')
}

How to Use

(See SampleActivity for a more complete example)

First create a listener object:

private SlideDateTimeListener listener = new SlideDateTimeListener() {

    @Override
    public void onDateTimeSet(Date date)
    {
        // Do something with the date. This Date object contains
        // the date and time that the user has selected.
    }

    @Override
    public void onDateTimeCancel()
    {
        // Overriding onDateTimeCancel() is optional.
    }
};

Then pass the listener into the builder and show the dialog:

new SlideDateTimePicker.Builder(getSupportFragmentManager())
    .setListener(listener)
    .setInitialDate(new Date())
    .build()
    .show();

Note that the Date object that you pass in to .setInitialDate() should contain both the date and time that you wish to initially display.

To set the minimum date to display:

.setMinDate(date)

To set the maximum date to display:

.setMaxDate(date)

The default time format is the current device's default, but you can force a 24-hour or 12-hour time format:

To force 24-hour time:

.setIs24HourTime(true)

To force 12-hour time:

.setIs24HourTime(false)

The default theme is Holo Light, but you can specify either Holo Light or Dark explicitly:

.setTheme(SlideDateTimePicker.HOLO_LIGHT)

or

.setTheme(SlideDateTimePicker.HOLO_DARK)

To specify the color for the sliding tab underline (indicator):

.setIndicatorColor(Color.parseColor("#FF0000"))

To specify the color of the horizontal divider lines in the DatePicker and TimePicker: You can also set a custom color for the horizontal divider lines in the DatePicker and TimePicker, but for this you have to paste your own version of selection_divider.9.png into the the library's drawable-xxxx folders that has your desired color. To do this, open selection_divider.9.png in a graphics editor, change the color, then paste your new files into the drawable-xxxx folders.

Note on Reflection

To allow for the modification of the horizontal dividers in the DatePicker and TimePicker, this library uses reflection in the CustomDatePicker and CustomTimePicker classes.

Contributing

Contributions are welcome. Please open up an issue in GitHub or submit a PR.

Changelog

v1.0.4

  • Fixed issue where the DatePicker would shift to the left when scrolled vertically (thanks to alexrainman)

v1.0.3

  • Update build.gradle

v1.0.2

  • Changed to Android Studio / Gradle Project

v1.0.1

  • Builder methods now correspond to outer class methods
  • Improved javadoc comments

v1.0.0

  • First release

License

Licensed under the Apache License, Version 2.0

The following files:

  • SlidingTabLayout.java
  • SlidingTabStrip.java

are Copyright (C) 2013 The Android Open Source Project and are licensed under the Apache License, Version 2.0

Acknowledgements

Thanks to Arman Pagilagan's blog post for the initial idea.

slidedatetimepicker's People

Contributors

chathudan avatar jjobes avatar johnjohndoe avatar milaptank avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slidedatetimepicker's Issues

Time zone

Hi . can i use library but use solar date ?

FragmentManager not belong

Fragment DateFragment{4262dd00 #0 id=0x7f090193 android:switcher:2131296659:0} declared target fragment SlideDateTimeDialogFragment{42616d20 #0 tagSlideDateTimeDialogFragment} that does not belong to this FragmentManager!

Doesn't work on build tools 26

Works fine on build tools 25
Upgraded my gradle build tools to v 26.0.1

Error:

java.lang.IllegalStateException: Fragment DateFragment{22dd4c2 #0 id=0x7f08011e android:switcher:2131231006:0} declared target fragment SlideDateTimeDialogFragment{462e2d3 #0 tagSlideDateTimeDialogFragment} that does not belong to this FragmentManager!
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1352)
at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1109)
at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:996)
at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:99)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2364)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2199)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:651)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:145)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1236)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1084)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
at com.github.jjobes.slidedatetimepicker.CustomViewPager.onMeasure(CustomViewPager.java:70)
at android.view.View.measure(View.java:19734)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
at android.view.View.measure(View.java:19734)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:19734)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:19734)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:687)
at android.view.View.measure(View.java:19734)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2271)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1331)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1607)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
at android.view.Choreographer.doCallbacks(Choreographer.java:683)
at android.view.Choreographer.doFrame(Choreographer.java:619)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

error

I/chromium: [INFO:SkFontConfigInterface_android.cpp(247)] ---- failed to open </system/fonts/CutiveMono.ttf> as a font

Android O issue

The dialog is getting displayed, but the actual selector for the date and time is not visible so it cannot be displayed on Android O only.

SlideDateTimeDialogFragment.mListener cause memory leak

hi, when i use SlideDateTimePicker in my custom view,it will cause the activity who use this custom view ,in the activity's onDestory method i set the custom view's listener null, but still leak,dou you know how to fix this problem?
qq 20150806111943

how to set the minTime?

only minDate,i want to set minTime,how to do?
just like not earlier than the current moment,now is 2015-10-22 15:37,date can set,but time not.

隐藏“日”选择的 滑动条

   通过设置什么方法可以隐藏掉年月日选择中的“日”这个条目的选择,或者其他的隐藏也可以使用同样的思路。研究您的代码,没有找到相关的处理方法。

求助!!

Feature to add

I need to set spinners format like "dd MM yyyy", but it is in "mmm dd yyyy" how can do this?

I have added the code in to set month nubers, but not working

public CustomDatePicker(Context context, AttributeSet attrs) {

super.(context, attrs);
.............

             Field monthNames = idClass.getField("mShortMonths"); // inner static class field not found
            monthNames.setAccessible(true);

            String[] months = new String[12];
            for (int i = 0; i < 12; ++i) {
                months[i] = String.format("%d", i + 1);
            }
            monthNames.set(this, months);

            monthNumberPicker.setDisplayedValues(months);
}

MinDate, MaxDate bug

Hi,

I am using minDate and maxDate functions, it works in day level but not working in hour, minutes level. For example, If I set minDate; now as 30.07.2015 13:28, I can choose 30.07.2015 12:28.. minDate and maxDate functions must also work for hour and minutes thresholds..

Thx.

Check time too at setMinDate or create new method

Hey man, I really like your Time Picker, but I need to check the time too, not just the date because I will have two pickers. Do you think you can spare some time to implement that please?

Thank you in advance!

Error when I'm setting the min time to current time...

java.lang.IllegalArgumentException: fromDate: Mon Apr 10 18:42:15 IST 2017 does not precede toDate: Mon Apr 10 13:43:15 IST 2017
at android.widget.CalendarViewLegacyDelegate.getWeeksSinceMinDate(CalendarViewLegacyDelegate.java:926)
at android.widget.CalendarViewLegacyDelegate.access$1400(CalendarViewLegacyDelegate.java:49)
at android.widget.CalendarViewLegacyDelegate$WeeksAdapter.init(CalendarViewLegacyDelegate.java:1014)
at android.widget.CalendarViewLegacyDelegate$WeeksAdapter.access$500(CalendarViewLegacyDelegate.java:992)
at android.widget.CalendarViewLegacyDelegate.setMinDate(CalendarViewLegacyDelegate.java:507)
at android.widget.CalendarView.setMinDate(CalendarView.java:352)
at android.widget.DatePicker$DatePickerSpinnerDelegate.setMinDate(DatePicker.java:782)
at android.widget.DatePicker.setMinDate(DatePicker.java:234)
at com.github.jjobes.slidedatetimepicker.DateFragment.onCreateView(DateFragment.java:140)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1643)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1272)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1120)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1646)
at com.github.jjobes.slidedatetimepicker.CustomViewPager.onMeasure(CustomViewPager.java:70)
at android.view.View.measure(View.java:17960)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:760)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:17960)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
at android.view.View.measure(View.java:17960)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
at android.view.View.measure(View.java:17960)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2798)
at android.view.View.measure(View.java:17960)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2422)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1392)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1648)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1302)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6644)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:818)
at android.view.Choreographer.doCallbacks(Choreographer.java:621)
at android.view.Choreographer.doFrame(Choreographer.java:590)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:804)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5763)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

setMinDate crash

setMinDate does not work properly if it is set with respect to time, ie, setMinDate as currentTime - 12 hours

Limit to show only the datepicker

Hi jjobes, Thanks for creating this awesome library , need to know how can I limit this picker so that it just shows the date picker instead of datetime picker.

build.gradle -> dependencies: Can't put direct compile ' github '

dependencies {
compile 'com.github.jjobes.slidedatetimepicker'
}
I am getting below error :
Error:(26, 0) Supplied String module notation 'com.github.jjobes.slidedatetimepicker' is invalid. Example notations: 'org.gradle:gradle-core:2.2', 'org.mockito:mockito-core:1.9.5:javadoc'.

So please tell me what is addition dependencies we have to add.This is also not in Maven.

Touch events getting routed to wrong picker after rotation

When the dialog is displayed and you scroll to the TimePicker, then rotate the device, when swiping the spinners vertically, those touch events are routed to the other picker.

I believe the issue is with CustomViewPager's dispatchTouchEvent() implementation.

The purpose of overriding dispatchTouchEvent() was to allow the ViewPager to handle the horizontal events and the DatePicker (or TimePicker) to handle the vertical events. So if there is another method of doing this that either involves a different implementation of dispatchTouchEvent(), or instead overriding onInterceptTouchEvent() and onTouchEvent(), then that may remove the orientation problem.

Maintain consistent version information

I noticed that you updated the version number in the CHANGELOG section a while ago. I could however not find the same version being set for the library such as in AndroidManifest.xml. Please make sure these are in sync.

Further, it would be very helpful if you could at the same time add a version tag to the repository.

$ git checkout 7ad978903e3bc5f2425ddb0b7625579413f2a35e
$ git tag -a "v.1.0.0" -m "Initial release."
$ git checkout 294a3ab99a36055baef4525c2aad2025328ff4d9
$ git tag -a "v.1.0.1" -m "Builder methods rewrite."
$ git checkout master
$ git push origin master --tags

This will allow to see fast and convenient what is going on. The tag should contain a short summary of what has been happening since the last version number. The long description can be found in the CHANGELOG section (which should be a separate file in the future when it becomes too long).

Worked Fine For some days then start cashing

12-23 13:19:20.453 6954-6954/com.example.zohai.v360 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.zohai.v360, PID: 6954
java.lang.IllegalStateException: Fragment DateFragment{e3b9c36 #0 id=0x7f090160 android:switcher:2131296608:0} declared target fragment SlideDateTimeDialogFragment{be2737 #0 tagSlideDateTimeDialogFragment} that does not belong to this FragmentManager!
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1352)
at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1187)
at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:1070)
at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:115)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2374)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2209)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:649)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:145)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1238)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1086)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1616)
at com.github.jjobes.slidedatetimepicker.CustomViewPager.onMeasure(CustomViewPager.java:70)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721)
at android.view.View.measure(View.java:22002)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2410)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1471)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1751)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

java.lang.NoSuchFieldError: No static field tabText of type I in class Lcom/github/jjobes/slidedatetimepicker/R$id

Hi, I am facing this error:

java.lang.NoSuchFieldError: No static field tabText of type I in class Lcom/github/jjobes/slidedatetimepicker/R$id; or its superclasses (declaration of 'com.github.jjobes.slidedatetimepicker.R$id' appears in /data/app/com.softguard.android.smartpanicsNG-2/split_lib_slice_7_apk.apk)
at com.github.jjobes.slidedatetimepicker.SlideDateTimeDialogFragment.initViewPager(SlideDateTimeDialogFragment.java:225)
at com.github.jjobes.slidedatetimepicker.SlideDateTimeDialogFragment.onCreateView(SlideDateTimeDialogFragment.java:148)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2343)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

I am using https://jitpack.io/p/pwiniars/SlideDateTimePicker v1.0.8

Minutes Interval

Hello I need your help. Is there any way to adjust the minute interval to show just 00 and 30?

How to set minutes in interval?

I am using this library in my project. What is the need of application is - I want to set the time in interval of 15 minutes, As user can select the hours from 1 to 12/24 but the minutes should display only 00, 15, 30 and 45 and electable only the display values. How to customize that? I am not getting how to achieve this functionality in this library.

java.lang.IllegalStateException when i click on button to open SlideDateTimePicker

public class DateAndTimePickerFragment extends Fragment {
private SimpleDateFormat mFormatter = new SimpleDateFormat("MMMM dd yyyy hh:mm aa");
private Button mButton;
    private SlideDateTimeListener listener = new SlideDateTimeListener() {

        @Override
        public void onDateTimeSet(Date date)
        {
            Toast.makeText(mcontext,
                    mFormatter.format(date), Toast.LENGTH_SHORT).show();
        }

        // Optional cancel listener
        @Override
        public void onDateTimeCancel()
        {
            Toast.makeText(mcontext,
                    "Canceled", Toast.LENGTH_SHORT).show();
        }
    };
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mButton = v.findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new SlideDateTimePicker.Builder(getActivity().getSupportFragmentManager())
                        .setListener(listener)
                        .setInitialDate(new Date())
                        .build()
                        .show();
            }
        });
}
public class CustomViewPager extends ViewPager
{
@Override
public void onMeasure(...)
{
 int height = 0;

        for (int i = 0; i < getChildCount(); i++)
        {
            View child = getChildAt(i);
            child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
            int h = child.getMeasuredHeight();
            if (h > height)
                height = h;
        }

        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);   //error on this line

        mDatePicker = (DatePicker) findViewById(R.id.datePicker);
        mTimePicker = (TimePicker) findViewById(R.id.timePicker);
}
}
06-01 16:28:42.382 15726-15726/***** E/UncaughtException: java.lang.IllegalStateException: Fragment DateFragment{6011f27 #0 id=0x7f0903e0 android:switcher:2131297248:0} declared target fragment SlideDateTimeDialogFragment{52255d4 #5 tagSlideDateTimeDialogFragment} that does not belong to this FragmentManager!
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1352)
        at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1109)
        at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:996)
        at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:99)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2364)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
        at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2199)
        at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:651)
        at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:145)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1236)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1084)
        at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
        at alastrine.slidedatetimepicker.CustomViewPager.onMeasure(CustomViewPager.java:70)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2112)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1203)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1464)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1119)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6060)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
        at android.view.Choreographer.doCallbacks(Choreographer.java:670)
        at android.view.Choreographer.doFrame(Choreographer.java:606)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
        at android.os.Handler.handleCallback(Handler.java:746)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5443)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-01 16:28:42.383 15726-15906/**** E/FirebaseCrash: Firebase Crash Reporting not enabled
06-01 16:28:42.384 15726-15726/****l E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ****, PID: 15726
    java.lang.IllegalStateException: Fragment DateFragment{6011f27 #0 id=0x7f0903e0 android:switcher:2131297248:0} declared target fragment SlideDateTimeDialogFragment{52255d4 #5 tagSlideDateTimeDialogFragment} that does not belong to this FragmentManager!
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1352)
        at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1109)
        at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:996)
        at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:99)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2364)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
        at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2199)
        at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:651)
        at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:145)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1236)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1084)
        at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
        at alastrine.slidedatetimepicker.CustomViewPager.onMeasure(CustomViewPager.java:70)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
        at android.view.View.measure(View.java:18804)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2112)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1203)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1464)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1119)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6060)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
        at android.view.Choreographer.doCallbacks(Choreographer.java:670)
        at android.view.Choreographer.doFrame(Choreographer.java:606)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
        at android.os.Handler.handleCallback(Handler.java:746)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5443)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

Wrong way of setting ViewPager height

The way you set the ViewPager height OnMeasure makes the DatePicker move to the left when you touch it.

Replace it with this code:

int height = 0;
for(int i = 0; i < getChildCount(); i++) {
    View child = getChildAt(i);
    child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
    int h = child.getMeasuredHeight();
    if(h > height) height = h;
}

heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

And problem fixed!

InflateException Error inflating class .. CustomDatePicker

Exception Message:
android.view.InflateException: Binary XML file line #0: Error inflating class com.duomengda...CustomDatePicker
at android.view.LayoutInflater.createView(LayoutInflater.java:640)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
at android.view.LayoutInflater.inflate(LayoutInflater.java:483)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at com.duomengda.shipper.ui.timepicker.DateFragment.onCreateView(DateFragment.java:128)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2343)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2199)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:651)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:145)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1236)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1084)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
at com.duomengda.shipper.ui.timepicker.CustomViewPager.onMeasure(CustomViewPager.java:65)
at android.view.View.measure(View.java:18417)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5801)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1835)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:725)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:616)
at android.view.View.measure(View.java:18417)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5801)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:18417)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5801)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:18417)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5801)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2881)
at android.view.View.measure(View.java:18417)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2237)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1270)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1537)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1180)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6558)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5835)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.refle

error location:
LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);
View v = localInflater.inflate(R.layout.fragment_date, container, false);
mDatePicker = (CustomDatePicker) v.findViewById(R.id.datePicker);

Crashing on basic setup

I call this inside (AppCompat)Activity:
new SlideDateTimePicker.Builder(getSupportFragmentManager())
.setListener(listener)
.setInitialDate(new Date())
//.setMinDate(minDate)
//.setMaxDate(maxDate)
//.setIs24HourTime(true)
//.setTheme(SlideDateTimePicker.HOLO_DARK)
//.setIndicatorColor(Color.parseColor("#990000"))
.build()
.show();

and it crashes with
java.lang.NoSuchFieldError: com.github.jjobes.slidedatetimepicker.R$id.tabText
although I see this field is available.
Running on Nexus 5, Marshmallow

FATAL EXCEPTION: main Process: com.somedemo, PID: 15504
java.lang.NoSuchFieldError: com.github.jjobes.slidedatetimepicker.R$id.tabText
at com.github.jjobes.slidedatetimepicker.SlideDateTimeDialogFragment.initViewPager(SlideDateTimeDialogFragment.java:225)
at com.github.jjobes.slidedatetimepicker.SlideDateTimeDialogFragment.onCreateView(SlideDateTimeDialogFragment.java:148)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2035)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1089)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1276)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:754)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1661)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)

Set Mini Date (Time is larger than current TIME) Ouccrs Crash

Hi there, actually I think this is not this projects problem, but I really need help with this.
When I set a mini-date like (2017-11-15 15:15:15) and initial date (2017-11-17 13:13:13), it will crash and shows error reminds mini-date above is larger than (2017-11-15 13:13:13).
It feels like when setting mini-date the datepicker re-initialed an new date then compare with mini-date.
Do you have any idea about this? Currently I cannot set mini time over real-time.

Not able to really set date and time in Fragment

When I use the most recent version of your project I'm not able to set the date and time in the fragment that pops up. If I use version 1.0.3 everything works fine... I'm using a google pixel 2 with android version 8.0.0. I have no clue what the problem is and just wanted to inform yu about the issue. Thanks anyway for creating this really useful library!

grafik

Throws exception on rotate if visible

On rotate TimeFragment throws exception "Calling fragment must implement TimeFragment.TimeChangedListener interface";

onCreate should be changed to:
mCallback = (TimeChangedListener) getParentFragment(); //getTargetFragment();

Same is with DateFragment

I encountered a problem

Error:Execution failed for task ':NurseMobile:processDebugManifest'.

Manifest merger failed with multiple errors, see logs

I answer to a query on google.but it's not work.

<manifest package="com.gentlehealthcare.nursemobile"
          xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:versionCode="3"
          android:versionName="1.1.1">

    <application
   tools:replace="android:icon,android:theme">

what should i do

Please help me to resolve this problem

I've this problem,
please help me to resolved this.

Supplied String module notation 'org.apache.http.legacy is invalid. Example notations: 'org.gradle:gradle-core:2.2' , 'org.mockito:mockito-core:1.9.5:javadoc'

Warn about use of reflection

You should add a warning to the readme that clearly states that this library is using a bunch of reflection in the Picker classes.

Library Setup

Hi, i tried adding compile project(':slideDateTimePicker') in my build.gradle, but getting Error:(30, 0) Project with path ':slideDateTimePicker' could not be found in project ':app'. any help on how i can fix this, thanks

Use SlideDateTimePicker from PreferenceActivity

Hi,

SlideDateTimePicker uses android.support.v4.app.FragmentManager from support library.
PreferenceActivity has no method getSupportFragmentManager().
It has only getFragmentManager() returning ordinary android.app.FragmentManager.

Is it possible to use SlideDateTimePicker from PreferenceActivity?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.