【问题标题】:Error inflating class android.widget.DatePicker on android version 7.0在 android 版本 7.0 上膨胀类 android.widget.DatePicker 时出错
【发布时间】:2017-05-10 05:08:27
【问题描述】:

我想显示弹出日期选择器并使用此代码

Calendar mcurrentDate = Calendar.getInstance();
            int mYear = mcurrentDate.get(Calendar.YEAR);
            int mMonth = mcurrentDate.get(Calendar.MONTH);
            int mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog mDatePicker = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
                    txtDate1.setText(selectedmonth + "/" + selectedday + "/" + selectedyear);
                }
            }, mYear, mMonth, mDay);
            mDatePicker.setTitle("Select date");
            mDatePicker.show();

我的 xml 文件

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"
android:orientation="horizontal" android:id="@+id/lLdate1">
<TextView android:text="Tgl 1" android:textSize="15sp" android:textStyle="bold"
android:textColor="@color/black" android:layout_width="95dp" android:layout_height="wrap_content"/>
<EditText android:id="@+id/txtDate1" android:layout_width="130dp" android:layout_height="wrap_content"
android:textColor="@color/black" android:textSize="15dp" android:singleLine="true"
android:editable="false"> </EditText>
<ImageButton android:id="@+id/imgCal1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:padding="7dp"
android:cropToPadding="true" android:src="@drawable/calendar25"/> </LinearLayout>

在 7.0 以下的 android 版本上可以正常工作。 但在 android 7.0 上出现错误

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.MyProject.screen.FilteringFragment$3.onClick(FilteringFragment.java:244)

请帮帮我

【问题讨论】:

  • 请张贴xml文件
  • 你肯定遗漏了一些导入语句
  • 请贴出类的所有import语句
  • 导入android.app.DatePickerDialog;导入 android.app.DatePickerDialog;导入android.app.Dialog;导入android.app.DialogFragment;导入android.app.Fragment;导入android.database.sqlite.SQLiteDatabase;导入 android.graphics.drawable.AnimationDrawable;导入android.os.Bundle;导入 android.support.v4.widget.DrawerLayout;导入 android.text.Editable;导入 android.text.TextWatcher;导入 android.view.LayoutInflater;导入android.view.View;导入android.view.ViewGroup;导入 android.widget.*;导入 com.XX.xXX.Module.DBHendle;
  • 导入 com.XX.xXX.Module.GeneralModul;进口com.XX.xXX.R;导入 com.XX.xXX.domain.*;导入 com.XX.xXX.guice.AppPreferences;导入 com.alexgilleran.icesoap.exception.SOAPException;导入 com.alexgilleran.icesoap.observer.SOAPObserver;进口 com.alexgilleran.icesoap.request.Request;

标签: android widget android-dialogfragment android-datepicker datepickerdialog


【解决方案1】:

试试这个。

声明这些变量

private DateDialog dialog;
boolean click=false;

onCreate 方法中单击imgCal1 时处理此问题

imgCal1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                click=true;
                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");
        }
            }
        });

之后只添加这个

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 year, int month, int day)
        {
            String date1=year+"-"+String.format("%02d", month+1)+"-"+String.format("%02d", day);
            date.setText(date1);
            date2= date.getText().toString();
            return ;
            //t.add_new(date);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2017-02-16
    • 2023-03-19
    相关资源
    最近更新 更多