日期选择器对话框不上点击打开 [英] Datepicker dialog box does not open on click

查看:151
本文介绍了日期选择器对话框不上点击打开的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我运行,按一下按钮,它不会打开datapicker DialogBox的。我无法找出什么是不正确。请,任何一个可以检查和指导我哪里是在程序不正确的code。

  {
      //声明类
        ButtonViews意见;
        dpListener dpListenerView;
        // Declartion会员vairables
        INT日,月,x_year;
        诠释小时;
        INT分钟;
        挂历台历;        @覆盖
        保护无效的onCreate(捆绑savedInstanceState){
            super.onCreate(savedInstanceState);
            的setContentView(R.layout.activity_main);            意见=新ButtonViews();
            dpListenerView =新dpListener();            // ButtonListener
            views.button_date.setOnClickListener(本);
            views.button_time.setOnClickListener(本);
            //           //拿起使用日历类的默认日期
             日历= GregorianCalendar.getInstance(TimeZone.getTimeZone(GMT),Locale.getDefault());            天= calendar.get(Calendar.DAY_OF_MONTH);
            月= calendar.get(的Calendar.MONTH);
            x_year = calendar.get(Calendar.YEAR);
            Log.i(天民.....,+月);            小时= calendar.get(Calendar.HOUR_OF_DAY);
            分钟= calendar.get(Calendar.MINUTE);            setupDate(日,月,x_year);
            setupTime(小时,分钟);
       }        @覆盖
        公共无效的onClick(视图v){
            开关(v.getId()){
                案例R.id.button_date:
                    showDatePickerDialog();
                    打破;
                案例R.id.button_time:
                      showTimePickerDialog();
                    打破;
            }
        }
        私人无效setupTime(INT小时,INT分钟){
            views.button_time.setText(小时+:+分钟);
        }        私人无效setupDate(INT日,月整型,诠释年){
            串strMonth =((月+ 1) - ; = 9)? (0+(月+ 1)):将String.valueOf(月+ 1);
            views.button_date.setText(将String.valueOf(天)+/+ strMonth +/+将String.valueOf(年));
        }        私人无效showDatePickerDialog(){
            DatePickerDialog datepickerdialog =新DatePickerDialog
                    (
                            这个,
                             dpListenerView,
                           / *新DatePickerDialog.OnDateSetListener(){
                                @覆盖
                                公共无效onDateSet(查看的DatePicker,年整型,诠释monthOfYear,诠释请将dayOfMonth){
                                }} * /
                            //这个,                            x_year,
                            月,
                            天
                    );
        }
     / *私人OnDateSetListener dpListener =新OnDateSetListener(){
                @覆盖
                公共无效onDateSet(查看的DatePicker,年整型,诠释monthOfYear,诠释请将dayOfMonth){
                   * // *天=请将dayOfMonth;
                    月= monthOfYear;
                    x_year =年; * // *
                    setupDate(请将dayOfMonth,monthOfYear,年);
                }            }; * /
        公共无效showTimePickerDialog(){          TimePickerDialog timePickerDialog =新TimePickerDialog(
                    DateTimePickerActivity.this,
                    这个,
                    小时,
                    分钟,
                    真正
             );
            calendar.set(Calendar.HOUR,小时);
            calendar.set(Calendar.MINUTE,分钟);            timePickerDialog.show();
        }    // @覆盖
    //公共无效onDateSet(查看的DatePicker,年整型,诠释monthOfYear,诠释请将dayOfMonth){
    // setupDate(请将dayOfMonth,monthOfYear,年);
    //}        @覆盖
        公共无效onTimeSet(TimePicker观点,诠释HOUROFDAY,分整型){
            setupTime(HOUROFDAY,分钟);
        }
       类ButtonViews {            按钮button_time;
            按钮button_date;            公共ButtonViews(){
                button_date =(按钮)findViewById(R.id.button_date);
                button_time =(按钮)findViewById(R.id.button_time);
            }
        }      类dpListener实现OnDateSetListener      {
            @覆盖
            公共无效onDateSet(查看的DatePicker,年整型,诠释monthOfYear,诠释请将dayOfMonth){
                   / *天=请将dayOfMonth;
                    月= monthOfYear;
                    x_year =年; * /                setupDate(请将dayOfMonth,monthOfYear,年);
            }        }
    }


解决方案

  @覆盖
    公共无效的onClick(视图v){
        开关(v.getId()){
            案例R.id.button_date:
                的ShowDialog(999); //用于显示对话框方​​法。您可以使用任何诠释
                打破;
            案例R.id.button_time:
                  的ShowDialog(99);
                打破;
        }
    }

和定义从int鉴定对话框此方法。

  @覆盖
保护对话框onCreateDialog(INT ID){
    // TODO自动生成方法存根
    如果(ID == 999){
        返回新DatePickerDialog(这一点,myDateListener,年,月,日);
    }否则如果(ID == 99){
        返回新TimePickerDialog(这一点,myTimeListener,H,M,真正的);
    }
    返回null;
}

和有听众

  //对于日期选取器
私人DatePickerDialog.OnDateSetListener myDateListener =新OnDateSetListener(){    @覆盖
    公共无效onDateSet(查看的DatePicker,年整型,诠释monthOfYear,
            INT请将dayOfMonth){
        // TODO自动生成方法存根
        天=请将dayOfMonth;
        一个月= monthOfYear + 1;
        年=年;
        Toast.makeText(
                MainActivity.this,
                新的StringBuilder()追加(天).append( - )。追加(月)
                        。.append( - )附加(年),Toast.LENGTH_LONG).show();
    }
};
//对于TimePicker
私人TimePickerDialog.OnTimeSetListener myTimeListener =新OnTimeSetListener(){    @覆盖
    公共无效onTimeSet(TimePicker观点,诠释HOUROFDAY,分整型){
        // TODO自动生成方法存根
        H = HOUROFDAY;
        M =分钟;
        Toast.makeText(MainActivity.this,
        新的StringBuilder()追加(H).append(:)。追加(米),
        Toast.LENGTH_LONG).show();
    }
};

When I run and click the button, it does not open the datapicker dialogbox. I am not able to find out what is incorrect. Please, any one can check and guide me where is the incorrect code in the program.

   {
      //Declaration for class
        ButtonViews views;
        dpListener dpListenerView;
        // Declartion for member vairables
        int day, month, x_year;
        int hour;
        int minute;
        Calendar calendar;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            views = new ButtonViews();
            dpListenerView = new dpListener();

            //ButtonListener
            views.button_date.setOnClickListener(this);
            views.button_time.setOnClickListener(this);
            //

           // pick up the default date using Calender class
             calendar =  GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.getDefault());

            day = calendar.get(Calendar.DAY_OF_MONTH);
            month = calendar.get(Calendar.MONTH);
            x_year = calendar.get(Calendar.YEAR);
            Log.i("DAY in Num....."," "+ month);

            hour = calendar.get(Calendar.HOUR_OF_DAY);
            minute = calendar.get(Calendar.MINUTE);

            setupDate(day, month, x_year);
            setupTime(hour, minute);
       }

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.button_date:
                    showDatePickerDialog();
                    break;
                case R.id.button_time:
                      showTimePickerDialog();
                    break;
            }
        }


        private void setupTime(int hours, int minutes) {
            views.button_time.setText(hours + ":" + minutes);
        }

        private void setupDate(int day, int month, int year) {
            String strMonth = ((month+1) <=9) ? ("0" + (month+1)) : String.valueOf(month+1);
            views.button_date.setText(String.valueOf(day) + "/" + strMonth + "/" + String.valueOf(year));
        }

        private void showDatePickerDialog() {
            DatePickerDialog datepickerdialog = new DatePickerDialog
                    (
                            this,
                             dpListenerView,
                           /* new DatePickerDialog.OnDateSetListener() {
                                @Override
                                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                                } },*/
                            //this,

                            x_year,
                            month,
                            day
                    );


        }


     /*   private OnDateSetListener dpListener = new OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                   *//* day = dayOfMonth;
                    month = monthOfYear;
                    x_year = year;*//*
                    setupDate(dayOfMonth,monthOfYear,year);
                }

            };*/


        public void showTimePickerDialog() {

          TimePickerDialog   timePickerDialog = new TimePickerDialog(
                    DateTimePickerActivity.this,
                    this,
                    hour,
                    minute,
                    true
             );
            calendar.set(Calendar.HOUR, hour);
            calendar.set(Calendar.MINUTE, minute);

            timePickerDialog.show();
        }

    //    @Override
    //    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    //        setupDate(dayOfMonth,monthOfYear,year);
    //    }

        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            setupTime(hourOfDay, minute);
        }


       class ButtonViews {

            Button button_time;
            Button button_date;

            public ButtonViews() {
                button_date = (Button) findViewById(R.id.button_date);
                button_time = (Button) findViewById(R.id.button_time);
            }
        }

      class dpListener implements OnDateSetListener

      {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                   /* day = dayOfMonth;
                    month = monthOfYear;
                    x_year = year;*/

                setupDate(dayOfMonth,monthOfYear,year);
            }

        }
    }

解决方案

 @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button_date:
                showDialog(999);// Method for Show Dialog. You can use any Int
                break;
            case R.id.button_time:
                  showDialog(99);
                break;
        }
    }

and Define this method for Identified dialog from int.

@Override
protected Dialog onCreateDialog(int id) {
    // TODO Auto-generated method stub
    if (id == 999) {
        return new DatePickerDialog(this, myDateListener, yr, month, day);
    } else if (id == 99) {
        return new TimePickerDialog(this, myTimeListener, h, m, true);
    }
    return null;
}

And there Listeners

// For Date Picker
private DatePickerDialog.OnDateSetListener myDateListener = new OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        day = dayOfMonth;
        month = monthOfYear + 1;
        yr = year;
        Toast.makeText(
                MainActivity.this,
                new StringBuilder().append(day).append("-").append(month)
                        .append("-").append(yr), Toast.LENGTH_LONG).show();
    }
};
// For TimePicker
private TimePickerDialog.OnTimeSetListener myTimeListener = new OnTimeSetListener() {

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // TODO Auto-generated method stub
        h = hourOfDay;
        m = minute;
        Toast.makeText(MainActivity.this,
        new StringBuilder().append(h).append(":").append(m),
        Toast.LENGTH_LONG).show();
    }
};

这篇关于日期选择器对话框不上点击打开的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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