尝试将我的appl从android 2.2(API 8)降级到android 2.1(API7),我面临着对话框的一些问题。基于this thread,我试图捕获这些异常,但不能覆盖showDialog方法。
我根据this answer将Java编译器从1.5转为1.6到类似的问题,但没有任何更改,Eclipse仍然返回:
无法覆盖活动
中的最终方法
public class MyActivity extends Activity implements
SeekBar.OnSeekBarChangeListener {
// ... some stuffs
@Override // here is the issue
public void showDialog(int dialogId) {
try {
super.showDialog(dialogId);
} catch (IllegalArgumentException e) {
Log.e(ACTIVITY_TAG, "Error dialog");
}
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_ALERT:
// Create out AlertDialog
Builder builder = new AlertDialog.Builder(this);
builder.setMessage(msg);
builder.setCancelable(false);
builder.setPositiveButton(GOTO_BOOK, new OkOnClickListener());
builder.setNegativeButton(STAY_HERE, new CancelOnClickListener());
AlertDialog dialog = builder.create();
dialog.show();
break;
case DIALOG_ONCREATE:
// Create out AlertDialog during the "onCreate" method (only "Ok"
// button)
Builder builder2 = new AlertDialog.Builder(getParent());
builder2.setMessage(msg);
builder2.setCancelable(false);
builder2.setPositiveButton(GO_BACK, new OkOnClickListener());
AlertDialog dialog2 = builder2.create();
dialog2.show();
break;
}
return super.onCreateDialog(id);
}
// ... some stuffs
}
答案 0 :(得分:1)
这是活动的最终方法,因此您无法覆盖此内容。如果要显示对话框,只需调用方法。
showDialog(ID);
答案 1 :(得分:1)
onCreateDialog不应该显示对话框,显示部分将由框架完成。您需要做的就是返回正确的对话框。
删除覆盖部分。您不需要针对此问题的解决方法。代码中存在问题
删除
dialog.show();
也代替了这个
return super.onCreateDialog(id);
使用
return dialog;