2011-11-18 42 views
14

是否可以輕鬆地繼承和擴展android中的XML資源,特別是菜單。XML(菜單)資源的繼承和擴展

例如。如果我的base_menu.xml是

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item android:id="@+id/item_manual_input" 
     android:title="@string/manual_input/"> 

    <item android:id="@+id/item_logoff" 
     android:title="@string/logoff"/> 

</menu> 

兩個選項我想在別處(在另一個活動中)重複使用。而不是重複在base_menu的項目的標籤,我非常想爲inheriting_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <menu android:id="@id/base_menu"/> 

    <item android:id="@+id/extra_option" 
     android:title="@string/extra_option/> 

</menu> 

做這樣的事情,但我沒有看到任何文檔中類似這樣的東西。是否支持這樣的事情,還是我堅持使用片段來限制各種XML資源的代碼和XML複製? (我相信這會工作,但我沒用過片段還)

回答

19

不可能菜單但可行的佈局
include標籤:https://developer.android.com/training/improving-layouts/reusing-layouts.html

對於菜單:

@Override public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.base, menu); // All menus in base.xml 
    getMenuInflater().inflate(R.menu.extras, menu); // base.xml + extras.xml 
    menu.add("More"); // base.xml + extras.xml + "More" 
    return true; 
} 
+1

包括有一個非常強大的工具,並可能:
您可以通過充氣菜單的XML文件,並添加一個菜單項解決代碼未被許多Android開發者使用。程序化的解決方法適用於另外一層,但除此之外,我們仍然陷入困境。功能完備的繼承,如類繼承,將會很棒,但我想很多應用程序並沒有真正使用它。我沒有看到任何不錯的選擇,不違反一個OOP原則或另一個原則 –

+4

上面的鏈接是死的,但我發現它[在這裏](http://developer.android.com/training/improving-佈局/重用-layouts.html)。 Romain Guy還有另一篇類似的有趣文章:[http://android-developers.blogspot.co.uk/2009/02/android-layout-tricks-2-reusing-layouts.html](http://android -developers.blogspot.co.uk/2009/02/android-layout-tricks-2-reusing-layouts.html)。希望這可以幫助某人。 –

+0

哇,我不知道你可以用不同的菜單多次運行膨脹,感謝分享這個 – Parker