2010-05-31 49 views
2

我知道这应该是相当简单的,但我不明白它。
我有一个活动(让我们称之为XyActivity),这已经很长。因此,我想将一些重写方法重定位到子类(我们称之为XyOptions)。看起来像这样:如何扩展SomeActivity以重新定位例如onCreateOptionsMenu?

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的方法永远不会被调用。我不明白为什么。我确信答案是微不足道的,所以请指出一些方向。

感谢,
Steff

回答

1

您在这里误解了继承。 如果要填充在一个子类的菜单,试试这个:

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

    public EditImageOptions() {...} 

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

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

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

你真是太棒了。我只是想通了,实际上回来纠正自己。这有点令人尴尬。对不起我的愚蠢...... – stfn 2010-05-31 12:58:35

1

我认为你正在试图做的是,在XyOptions调用onCreateOptionsMenu而在活动XyActivity是,通过实例化对象在XyActivity中的XyOptions。据我所知,这是不可能的。 onCreateOptionsMenu仅在手机上按下菜单按钮时才会调用。正如已经指出的那样,您应该纠正继承流程。