2011-11-18 15 views
14

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

ない可能性(私はこれがうまくいくと信じていますが、私はまだ断片を使用していません)。メニューについてはhttps://developer.android.com/training/improving-layouts/reusing-layouts.html


あなたは、メニューのxmlファイルを膨張させると、1つのメニュー項目を追加することで、コードに回避することができます。

@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

おそらく非常に強力なツールであり、含まれてい
includeタグが参照してください。いくつかのアンドロイド開発者によって活用されていません。プログラム上の回避策は、1つの追加レイヤーで機能しますが、それを超えても、まだ固執しています。クラス継承のような完全機能の継承は素晴らしく、多くのアプリが本当にそれを使用していないと思います。 OOPの原則に違反していないことがわかっている良いオプションはありません –

+4

上記のリンクは死んでいますが、私はそれを見つけました(http://developer.android.com/training/improving-レイアウト/ reusing-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

関連する問題