IshaqSalam Ответов: 2

Ошибка надувать класс для Андроид.виджет.отмечать


у меня есть promlem для показа datepicker, когда я использую android версии 7, я получаю ошибку
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
imgCal1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                iCal = 1;
                DialogFragment newFragment = new SelectDateFragment();
                newFragment.show(getFragmentManager(), "DatePicker");
            }
        });


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

        }
    }

2 Ответов

Рейтинг:
0

wseng

Попробовать это.

Объявить эти переменные

private DateDialog dialog;
boolean click=false;


Справьтесь с этим, когда imgCal1 щелкает в onCreate метод

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


После этого только добавьте это

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


Рейтинг:
0

David Crow

Как выглядит ваш XML-файл макета, содержащий DatePicker виджет?