无法覆盖“活动”选项卡中的showDialog

时间:2012-08-29 08:59:00

标签: android override

尝试将我的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

    }

2 个答案:

答案 0 :(得分:1)

这是活动的最终方法,因此您无法覆盖此内容。如果要显示对话框,只需调用方法。

showDialog(ID);

答案 1 :(得分:1)

onCreateDialog不应该显示对话框,显示部分将由框架完成。您需要做的就是返回正确的对话框。

删除覆盖部分。您不需要针对此问题的解决方法。代码中存在问题

删除

dialog.show();

也代替了这个

return super.onCreateDialog(id);

使用

return dialog;