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

ここで継承を誤解しています。サブクラスにメニューを設定したい場合は、これを試してください:

public class XyActivity extends XyOptions {
    public void onCreate(Bundle savedInstanceState) {
       //.. 他の
    }
}
public class XyOptions extends Activity {

    public EditImageOptions() {...}

    @オーバーライド
    public boolean onCreateOptionsMenu(メニュー メニュー) {...}

    @オーバーライド
    public boolean 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 に答える