Android的4.1.2对话框被称为两次 [英] Android 4.1.2 dialogs are called twice

查看:102
本文介绍了Android的4.1.2对话框被称为两次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我的应用程序这个问题时,我打电话给显示对话框中,它被称为莫名其妙地两次。这仅与Android 4.1及更高发生。所以我不认为这是任何code问题低版本工作正常。

你有没有听说过\\遇到过这个问题?

这里的code:

 按钮编辑=(按钮)ad.findViewById(R.id.editBtn);
        edit.setTypeface(的Roboto);
        edit.setOnClickListener(新OnClickListener(){            @覆盖
            公共无效的onClick(视图v){                的setDate();
                ad.dismiss();
            }
        });        ad.show();        ad.setOnDismissListener(新OnDismissListener(){            @覆盖
            公共无效onDismiss(DialogInterface对话){
                shiftsActivity.set pressed(真);            }
        });
    }    公共无效的setDate(){
    //初始化并打开设置对话框日期
    DatePickerDialog setDateDialog =新DatePickerDialog(Shifts.this,
            datePickerListener,dateAndTime.get(Calendar.YEAR)
            dateAndTime.get(的Calendar.MONTH)
            dateAndTime.get(Calendar.DAY_OF_MONTH));    setDateDialog.setTitle(设定日期);
    setDateDialog.show();}公共无效setStartTime(){    TimePickerDialog setStartTimeDialog =新TimePickerDialog(Shifts.this,
            startTimePicker,dateAndTime.get(Calendar.HOUR)
            dateAndTime.get(Calendar.MINUTE),TRUE);    setStartTimeDialog.setTitle(开始时间:);
    setStartTimeDialog.show();}公共无效setEndTime(){    TimePickerDialog setEndTimeDialog =新TimePickerDialog(Shifts.this,
            setEndTime,dateAndTime.get(Calendar.HOUR)
            dateAndTime.get(Calendar.MINUTE),TRUE);
    setEndTimeDialog.setTitle(结束:);
    setEndTimeDialog.show();
}TimePickerDialog.OnTimeSetListener startTimePicker =新TimePickerDialog.OnTimeSetListener(){    @覆盖
    公共无效onTimeSet(TimePicker观点,诠释HOUROFDAY,分整型){
        startIntHours = HOUROFDAY;
        startIntMinutes =分钟;
        editStartTime =的String.format(%02D,HOUROFDAY)+:
                +的String.format(%02D,分);
        setEndTime();    }
};TimePickerDialog.OnTimeSetListener setEndTime =新TimePickerDialog.OnTimeSetListener(){    @覆盖
    公共无效onTimeSet(TimePicker观点,诠释HOUROFDAY,分整型){        finishIntHours = HOUROFDAY;
        finsihIntMinutes =分钟;        如果(finishIntHours< startIntHours){
            finishIntHours = finishIntHours + Uti​​lity.HOURS_TIME_UNIT;
        }        如果(finsihIntMinutes< startIntMinutes){
            finsihIntMinutes = finsihIntMinutes + Uti​​lity.MINUTES_TIME_UNIT;
        }        totalHours = finishIntHours - startIntHours;
        totalMinutes = finsihIntMinutes - startIntMinutes;
        Log.i(TotalHours在时间选择器,+ totalHours);
        Log.i(Totalminute在时间选择器,+ totalMinutes);        editEndTime =的String.format(%02D,HOUROFDAY)+:
                +的String.format(%02D,分);        更换(Shifts.view,Shifts.position);    }
};


解决方案

根据您的code,无论这些方法是不断呼吁,因为你永远不使用 TimePickerDialogs

话虽这么说,有相关的 DatePickerDialog / TimePickerDialog 的行为可能相关的已知问题:<一href=\"http://$c$c.google.com/p/android/issues/detail?id=34833\">http://$c$c.google.com/p/android/issues/detail?id=34833

I have this issue with my app when I call to show a dialog, it is being called twice somehow. This only happens with android 4.1 and above. Lower version works fine so I dont think it's any code issue.

Did you heard\encountered this issue before?

here the code:

Button edit = (Button) ad.findViewById(R.id.editBtn);
        edit.setTypeface(roboto);
        edit.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                setDate();
                ad.dismiss();
            }
        });

        ad.show();

        ad.setOnDismissListener(new OnDismissListener() {

            @Override
            public void onDismiss(DialogInterface dialog) {
                shiftsActivity.setPressed(true);

            }
        });
    }

    public void setDate() {
    // Initialize and open the set date dialog
    DatePickerDialog setDateDialog = new DatePickerDialog(Shifts.this,
            datePickerListener, dateAndTime.get(Calendar.YEAR),
            dateAndTime.get(Calendar.MONTH),
            dateAndTime.get(Calendar.DAY_OF_MONTH));

    setDateDialog.setTitle("Set Date");
    setDateDialog.show();

}

public void setStartTime() {

    TimePickerDialog setStartTimeDialog = new TimePickerDialog(Shifts.this,
            startTimePicker, dateAndTime.get(Calendar.HOUR),
            dateAndTime.get(Calendar.MINUTE), true);

    setStartTimeDialog.setTitle("Started At:");
    setStartTimeDialog.show();

}

public void setEndTime() {

    TimePickerDialog setEndTimeDialog = new TimePickerDialog(Shifts.this,
            setEndTime, dateAndTime.get(Calendar.HOUR),
            dateAndTime.get(Calendar.MINUTE), true);
    setEndTimeDialog.setTitle("Ended:");
    setEndTimeDialog.show();
}

TimePickerDialog.OnTimeSetListener startTimePicker = new TimePickerDialog.OnTimeSetListener() {

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        startIntHours = hourOfDay;
        startIntMinutes = minute;
        editStartTime = String.format("%02d", hourOfDay) + ":"
                + String.format("%02d", minute);
        setEndTime();

    }
};

TimePickerDialog.OnTimeSetListener setEndTime = new TimePickerDialog.OnTimeSetListener() {

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

        finishIntHours = hourOfDay;
        finsihIntMinutes = minute;

        if (finishIntHours < startIntHours) {
            finishIntHours = finishIntHours + Utility.HOURS_TIME_UNIT;
        }

        if (finsihIntMinutes < startIntMinutes) {
            finsihIntMinutes = finsihIntMinutes + Utility.MINUTES_TIME_UNIT;
        }

        totalHours = finishIntHours - startIntHours;
        totalMinutes = finsihIntMinutes - startIntMinutes;
        Log.i("TotalHours in time picker", "" + totalHours);
        Log.i("Totalminute in time picker", "" + totalMinutes);

        editEndTime = String.format("%02d", hourOfDay) + ":"
                + String.format("%02d", minute);

        replace(Shifts.view, Shifts.position);

    }
};

解决方案

According to your code, neither of those methods are ever called, because you never use the TimePickerDialogs.

That being said, there is a known issue related to the behavior of DatePickerDialog/TimePickerDialog that may be relevant: http://code.google.com/p/android/issues/detail?id=34833

这篇关于Android的4.1.2对话框被称为两次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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