Android的4.1.2对话框被称为两次 [英] Android 4.1.2 dialogs are called twice
问题描述
我有我的应用程序这个问题时,我打电话给显示对话框中,它被称为莫名其妙地两次。这仅与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 + Utility.HOURS_TIME_UNIT;
} 如果(finsihIntMinutes< startIntMinutes){
finsihIntMinutes = finsihIntMinutes + Utility.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屋!