0

I'm using the following code to show DatePickerDialog in onClick method. And when user choses the date I set it in a textview. The error is occuring on 5 line where DatePickerDialog is being called. I've tried debugging it, the error is on the exact line and I'm unable to figure it out.

@Override
public void onClick(View view) {
    if (view.getId() == R.id.startDate_et) {
        final java.util.Calendar c = java.util.Calendar.getInstance();
        mYear = c.get(java.util.Calendar.YEAR);
        mMonth = c.get(java.util.Calendar.MONTH);
        mDay = c.get(java.util.Calendar.DAY_OF_MONTH);
        DatePickerDialog datePickerDialog = new DatePickerDialog(this,
            new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                     startDateEt.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
                }
        }, mYear, mMonth, mDay);
        datePickerDialog.show();
}

But when the method is called application crashes with following message.

FATAL EXCEPTION: main
Process: com.example.bisma.calendar_analyzer, PID: 3882
android.view.InflateException: Binary XML file line #20: Binary XML file 
line #20: Error inflating class <unknown>
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:112)
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:82)
at com.example.bisma.calendar_analyzer.ui.CreateEventActivity.onClick(CreateEventActivity.java:100)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class <unknown>
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:694)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:112) 
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:82) 
at com.example.bisma.calendar_analyzer.ui.CreateEventActivity.onClick(CreateEventActivity.java:100) 
at android.view.View.performClick(View.java:5204) 
at android.view.View$PerformClick.run(View.java:21153) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:619)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:112) 
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:82) 
at com.example.bisma.calendar_analyzer.ui.CreateEventActivity.onClick(CreateEventActivity.java:100) 
at android.view.View.performClick(View.java:5204) 
at android.view.View$PerformClick.run(View.java:21153) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: android.content.res.Resources$NotFoundException: File res/color/mcv_text_date_dark.xml from drawable resource ID #0x7f0c006c
at android.content.res.Resources.loadDrawableForCookie(Resources.java:2640)
at android.content.res.Resources.loadDrawable(Resources.java:2540)
at android.content.res.TypedArray.getDrawable(TypedArray.java:870)
at android.widget.DatePickerCalendarDelegate.<init>(DatePickerCalendarDelegate.java:155)
at android.widget.DatePicker.createCalendarUIDelegate(DatePicker.java:160)
at android.widget.DatePicker.<init>(DatePicker.java:140)
at android.widget.DatePicker.<init>(DatePicker.java:126)
at android.widget.DatePicker.<init>(DatePicker.java:122)
at java.lang.reflect.Constructor.newInstance(Native Method) 
at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:112) 
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:82) 
at com.example.bisma.calendar_analyzer.ui.CreateEventActivity.onClick(CreateEventActivity.java:100) 
at android.view.View.performClick(View.java:5204) 
at android.view.View$PerformClick.run(View.java:21153) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #7: <item> tag requires a 'drawable' attribute or child tag defining a drawable
at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:182)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:115)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1215)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1124)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:2630)
at android.content.res.Resources.loadDrawable(Resources.java:2540) 
at android.content.res.TypedArray.getDrawable(TypedArray.java:870) 
at android.widget.DatePickerCalendarDelegate.<init>(DatePickerCalendarDelegate.java:155) 
at android.widget.DatePicker.createCalendarUIDelegate(DatePicker.java:160) 
at android.widget.DatePicker.<init>(DatePicker.java:140) 
at android.widget.DatePicker.<init>(DatePicker.java:126) 
at android.widget.DatePicker.<init>(DatePicker.java:122) 
at java.lang.reflect.Constructor.newInstance(Native Method) 
at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:112) 
at android.app.DatePickerDialog.<init>(DatePickerDialog.java:82) 
at com.example.bisma.calendar_analyzer.ui.CreateEventActivity.onClick(CreateEventActivity.java:100) 
at android.view.View.performClick(View.java:5204) 
at android.view.View$PerformClick.run(View.java:21153) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)

Here is the complete XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context="com.example.bisma.calendar_analyzer.ui.CreateEventActivity">


<EditText
    android:id="@+id/eventTitle_et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:hint="Event Title" />

<EditText
    android:id="@+id/description_et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/eventTitle_et"
    android:layout_marginTop="10dp"
    android:hint="Description" />

<TextView
    android:id="@+id/startDate_et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/description_et"
    android:layout_marginTop="10dp"
    android:background="@drawable/round_field"
    android:hint="Start Date/Time"
    android:padding="10dp"
    android:textColor="@color/white"
    android:textColorHint="@color/white" />

<TextView
    android:id="@+id/endDate_et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/startDate_et"
    android:layout_marginTop="10dp"
    android:background="@drawable/round_field"
    android:hint="End Date/Time"
    android:padding="10dp"
    android:textColor="@color/white"
    android:textColorHint="@color/white" />

<Button
    android:id="@+id/create_event_btn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/endDate_et"
    android:layout_marginTop="10dp"
    android:text="Create Event" />

AwaisMajeed
  • 2,254
  • 2
  • 10
  • 25

2 Answers2

0
  1. This is the java class file

    TextView startDateEt;

                    @Override
                    protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_main);
    
                        startDateEt=(TextView) findViewById(R.id.startDate_et);
                        startDateEt.setOnClickListener(this);  
        }     
                @Override
                    public void onClick(View view) {
                        if (view.getId() == R.id.startDate_et) {
                            final java.util.Calendar c = java.util.Calendar.getInstance();
                            int mYear = c.get(java.util.Calendar.YEAR);
                            int mMonth = c.get(java.util.Calendar.MONTH);
                            int mDay = c.get(java.util.Calendar.DAY_OF_MONTH);
                            DatePickerDialog datePickerDialog = new DatePickerDialog(this,
                                    new DatePickerDialog.OnDateSetListener() {
                                        @Override
                                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                                            startDateEt.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
                                        }
                                    }, mYear, mMonth, mDay);
                            datePickerDialog.show();
                        }
                    }
    
  2. This is xml file

    <EditText
            android:id="@+id/eventTitle_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:hint="Event Title" />

    <EditText
            android:id="@+id/description_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/eventTitle_et"
            android:layout_marginTop="10dp"
            android:hint="Description" />

    <TextView
            android:id="@+id/startDate_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/description_et"
            android:layout_marginTop="10dp"
            android:hint="Start Date/Time"
            android:padding="10dp"

           />

    <TextView
            android:id="@+id/endDate_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/startDate_et"
            android:layout_marginTop="10dp"
            android:hint="End Date/Time"
            android:padding="10dp"
            />

    <Button
            android:id="@+id/create_event_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/endDate_et"
            android:layout_marginTop="10dp"
            android:text="Create Event" />
    </RelativeLayout>
vishal jangid
  • 2,967
  • 16
  • 22
0

I know this question is old, but for the benefit of anyone coming here from Google:

I was getting this exact InflateException (line # and everything) on my API 21 emulator but not my API 26 emulator. trying some things from the answers on this similar question led me to setting the title on the DatePickerDialog, which stopped it from crashing

    DatePickerDialog datePickerDialog = new DatePickerDialog(this,
        new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                 startDateEt.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
            }
    }, mYear, mMonth, mDay);
    datePickerDialog.setTitle(""); //ADDED THIS LINE
    datePickerDialog.show();
hair raisin
  • 2,618
  • 15
  • 13