2011-06-11 71 views
1

我正在學習如何爲Android應用程序創建選項菜單。Android上的DRY選項菜單

在它具有以下尖端保持乾爽與菜單中的guide

提示:如果您的應用程序包含 多種活動,其中一些 提供相同的選項菜單, 考慮創建一個活動,除了 onCreateOptionsMenu()和 onOptionsItemSelected()方法外, 什麼也沒有實現。然後 擴展這個類爲每個活動 應該共享相同的選項 菜單。這樣,您必須管理 只有一組代碼用於處理菜單 操作,並且每個後代類 都繼承了菜單行爲。

這看起來有問題。如果需要共享相同選項的Activity從不同的類繼承,那麼我的OptionsMenuActivity應該繼承什麼?我讀過Java不支持多重繼承,那麼你如何解決這個問題?

回答

3

具有選項菜單代碼的活動應擴展Activity類。

public class YourRootActivity extends Activity { 

// Any other stuff that you want for all activities 

public boolean onCreateOptionsMenu(Menu menu){ 
// your main options menu 
} 
} 

現在爲了需要這個菜單的類,讓它們擴展我們上面創建的活動。

class Activity1 extends YourRootActivity { 
} 

如果你想在子類的選項菜單稍作修改,就可以覆蓋在這些類的onCreateOptionsMenu方法。

+0

我明白這個方法。但是,如果Activity1擴展了Activity,Activity2擴展了其他一些類,我該怎麼辦? – user94154 2011-06-11 05:29:44

+0

Activity2不能擴展另一個類。如果您定義了Activity的子類,那麼您必須擴展Activity或Activity的子類。 Achie的答案是好的 – 2011-06-11 05:35:54

+0

這是Java的一個缺點,它可以在大多數情況下通過仔細實現類並使用接口來實現這些情況來解決。但在我們的例子中,因爲我們不想編寫所有Android的Activity類,所以我們必須做出折衷。在上述情況下,我們可能需要擴展TabActivity或MapsActivity。在那些和其他類似的情況下,我們將不得不在相應的活動中再次實現選項菜單代碼。 – achie 2011-06-11 05:44:26