Android 4.1.2对话框被调用两次 [英] Android 4.1.2 dialogs are called twice
问题描述
你以前听过这个问题吗?
这里的代码:
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){
shiftingActivity.setPressed(true);
}
});
}
public void setDate(){
//初始化并打开设置的日期对话框
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分钟){
startIntHours = hourOfDay;
startIntMinutes = minute;
editStartTime = String.format(%02d,hourOfDay)+:
+ String.format(%02d,分钟);
setEndTime();
}
};
TimePickerDialog.OnTimeSetListener setEndTime = new TimePickerDialog.OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker视图,int hourOfDay,int minute){
finishIntHours = hourOfDay;
finihIntMinutes =分钟;
if(finishIntHours< startIntHours){
finishIntHours = finishIntHours + Utility.HOURS_TIME_UNIT;
}
if(finihIntMinutes< startIntMinutes){
finihIntMinutes = finihIntMinutes + Utility.MINUTES_TIME_UNIT;
}
totalHours = finishIntHours - startIntHours;
totalMinutes = finihIntMinutes - startIntMinutes;
Log.i(TotalHours in time picker,+ totalHours);
Log.i(Totalminute in time picker,+ totalMinutes);
editEndTime = String.format(%02d,hourOfDay)+:
+ String.format(%02d,minute);
替换(Shifts.view,Shifts.position);
}
};
根据您的代码,这些方法都不会所谓的,因为你不会使用 TimePickerDialogs
。
就是说,有一个与行为有关的已知问题 DatePickerDialog
/ TimePickerDialog
可能是相关的: http://code.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屋!