15

特にメニューの場合、Androidで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レプリケーションを制限するためにフラグメントを使用することに固執していますか?(これでうまくいくと思いますが、まだフラグメントを使用していません)

4

1 に答える 1

19

メニューでは不可能ですが、レイアウトでは可能です。タグ
を参照してください: https ://developer.android.com/training/improving-layouts/reusing-layouts.htmlinclude

メニューの場合:
メニューxmlファイルを膨らませ、単一のメニュー項目を追加することで、コードを回避できます。

@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;
}
于 2011-11-18T21:42:00.770 に答える