Click here to Skip to main content
15,895,799 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i have a promlem to showing datepicker, when i using android version 7 i getting error
android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class android.widget.DatePicker
Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class android.widget.DatePicker
 Caused by: java.lang.reflect.InvocationTargetException
 at java.lang.reflect.Constructor.newInstance0(Native Method)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
 at android.view.LayoutInflater.createView(LayoutInflater.java:645)
 at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
 at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
 at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
 at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
 at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
 at android.app.DatePickerDialog.<init>(DatePickerDialog.java:119)
 at android.app.DatePickerDialog.<init>(DatePickerDialog.java:90)
 at com.MyApps.aps.screen.FilteringFragment$SelectDateFragment.onCreateDialog(FilteringFragment.java:744)

when i using android version less than 7 my Apps work find

please Help me..

What I have tried:

This is My Code
onCreateView
Java
imgCal1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                iCal = 1;
                DialogFragment newFragment = new SelectDateFragment();
                newFragment.show(getFragmentManager(), "DatePicker");
            }
        });


SelectDateFragment
Java
public static class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

        @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 view, int yy, int mm, int dd) {
            populateSetDate(yy, mm + 1, dd);
        }

        public void populateSetDate(int year, int month, int day) {
            if (iCal == 1) {
                txtDate1.setText(month + "/" + day + "/" + year);
            } else {
                txtDate2.setText(month + "/" + day + "/" + year);
            }

        }
    }
Posted
Updated 3-Jun-17 5:25am
Comments

Try this.

Declare these variables
Java
private DateDialog dialog;
boolean click=false;


Handle this when imgCal1 is clicked in onCreate method

Java
imgCal1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                click=true;
                iCal = 1;
                Dialog dialogFrg=dialog.getDialog();
               if(dialogFrg!=null && dialogFrg.isShowing()) {
            // no need to call dialog.show(ft, "DatePicker");
        } else {
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            dialog.show(ft, "DatePicker");
        }
            }
        });


After that only add this

Java
public static class DateDialog extends android.support.v4.app.DialogFragment implements DatePickerDialog.OnDateSetListener {

        public DateDialog() {
        }

        public Dialog onCreateDialog(Bundle savedInstanceState) //display calender
        {
            final Calendar c=Calendar.getInstance();
            int year=c.get(Calendar.YEAR);
            month=c.get(Calendar.MONTH);
            int day=c.get(Calendar.DAY_OF_MONTH);
            return new DatePickerDialog(getActivity(),this,year, month,day);
        }

        public void onDateSet(DatePicker view,int yy, int month, int day)
        {
           populateSetDate(yy, mm + 1, dd);
        }

        public void populateSetDate(int year, int month, int day) {
            if (iCal == 1) {
                txtDate1.setText(month + "/" + day + "/" + year);
            } else {
                txtDate2.setText(month + "/" + day + "/" + year);
            }
 
        }
    }
 
Share this answer
 
v3
What does your layout XML file look like that contains the DatePicker widget?
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900