扩展类android.widget.datepicker时出错 [英] Error inflating class android.widget.datepicker

查看:76
本文介绍了扩展类android.widget.datepicker时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个显示datepicker的方法,当我使用android版本7时我收到错误

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)



当我使用Android版本少于7我的应用程序工作时找到



请帮帮我..



我尝试过:



这是我的代码

onCreateView


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

please Help me..

What I have tried:

This is My Code
onCreateView

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





SelectDateFragment



SelectDateFragment

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);
            }

        }
    }

推荐答案

SelectDateFragment.onCreateDialog(FilteringFragment.java :744)
SelectDateFragment.onCreateDialog(FilteringFragment.java:744)



当我使用Android版本少于7我的应用程序工作时找到



请帮助我。 。



我尝试了什么:



这是我的代码< br $>
onCreateView


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

please Help me..

What I have tried:

This is My Code
onCreateView

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





SelectDateFragment



SelectDateFragment

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);
            }

        }
    }


试试这个。



声明这些变量

Try this.

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





处理时 imgCal1 点击 onCreate 方法





Handle this when imgCal1 is clicked in onCreate method

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

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);
            }
 
        }
    }


您的布局XML文件包含 DatePicker widget?
What does your layout XML file look like that contains the DatePicker widget?


这篇关于扩展类android.widget.datepicker时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆