2

我知道这应该相当简单,但我还是不明白。
我有一个 Activity (我们称之为XyActivity)已经很长了。因此,我想将一些被覆盖的方法重新定位到子类(我们称之为XyOptions)。看起来像这样:

public class XyActivity extends Activity {
    XyOptions xyOptions;
    public void onCreate(Bundle savedInstanceState) {
        xyOptions = new XyOptions();
        ...
    }
}

public class XyOptions extends XyActivity {

    public EditImageOptions() {...}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {...}

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {...}

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {...}

不幸的是,XyOptions中的方法永远不会被调用。我不明白为什么。我敢肯定答案是微不足道的,所以请指出我的方向。

谢谢,
斯特夫

4

2 回答 2

1

您在这里误解了继承。如果要在子类中填充菜单,请尝试以下操作:

公共类 XyActivity 扩展 XyOptions {
    公共无效 onCreate(Bundle savedInstanceState) {
       //.. 其他
    }
}
公共类 XyOptions 扩展 Activity {

    公共 EditImageOptions() {...}

    @覆盖
    公共布尔 onCreateOptionsMenu(菜单菜单){...}

    @覆盖
    公共布尔 onPrepareOptionsMenu(菜单菜单){...}

    @覆盖
    public boolean onOptionsItemSelected(MenuItem item) {...}
}
于 2010-05-31T11:57:53.487 回答
1

我认为您要做的是,通过在 XyActivity 中实例化 XyOptions 的对象,在 XyActivity 中调用 XyOptions 中的 onCreateOptionsMenu。据我所知,这是不可能的。onCreateOptionsMenu 仅在按下手机上的菜单按钮时调用。

正如已经指出的,您应该更正继承流程。

于 2010-05-31T12:11:40.007 回答