我从 SDK 版本 < 8 的手机收到以下错误消息。我刚刚在 android 市场上发布了这个应用程序,在发布之前我的测试手机是 HTC Thunderbolt 和 Droid X。根本没有这个问题。
我通过 Flurry 收到此错误报告。我无法直接对此进行测试,因为我没有 SDK < 8 的手机,并且由于某种原因,我无法让我的模拟器启动低于为应用程序设置的默认 SDK 的版本。
java.lang.IllegalArgumentException, android.app.Activity.createDialog:880 - (Activity#onCreateDialog 没有为 id 1 创建对话框)
下面是我实现的 onCreateDialog(int id)。
@Override
protected Dialog onCreateDialog(int id) {
super.onCreateDialog(id);
Dialog dialog = null;
switch(id){
case 1:
dialog = new CustomCalcDialog(this);
dialog.setTitle("Enter Shipping %");
activeTextView = shippingPercent;
dialog.show();
dialog = null;
break;
case 2:
dialog = new CustomCalcDialog(this);
dialog.setTitle("Enter Tax Rate");
activeTextView = taxPercent;
dialog.show();
dialog = null;
break;
case 3:
dialog = new CustomCalcDialog(this);
dialog.setTitle("Enter Commission %");
activeTextView = commissionPercent;
dialog.show();
dialog = null;
break;
case 4:
dialog = new CustomCalcDialog(this);
dialog.setTitle("Calculate Subtotal");
activeTextView = productSubtotal;
dialog.show();
dialog = null;
break;
case 5:
dialog = new CustomCalcDialog(this);
dialog.setTitle("Additional Shipping");
activeTextView = addShipping;
dialog.show();
dialog = null;
break;
case 6:
dialog = new BackgroundOptionsDialog(this);
dialog.setTitle("Choose Background:");
dialog.show();
dialog = null;
break;
default:
dialog = null;
}
return dialog;
}
下面是对话框是如何被解雇的。
private void registerListeners () {
enterTotal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
calcLogic(EQUALS);
}catch(Exception ex){}
operatorChange = DONT_CHANGE;
activeTextView.setText(calcDialogDisplay.getText().toString());
try {
if ((Float.parseFloat(calcDialogDisplay.getText().toString())) < 0) {}
}catch(Exception ex) {
activeTextView.setText("0");
}
mathCalculations();
CustomCalcDialog.this.dismiss();
}
});