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();
}
});