2010-05-31 9 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僅在手機上按下菜單按鈕時纔會調用。正如已經指出的那樣,您應該糾正繼承流程。