2011-11-18 10 views
14

¿Es posible heredar y extender recursos XML en android fácilmente, específicamente para menús.Herencia y extensión de recursos XML (menú)

Por ejemplo. si mi base_menu.xml es

<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> 

Ambas opciones Me gustaría reutilizar en otro lugar (en otra actividad). en lugar de repetir las etiquetas para los artículos en base_menu, me gustaría mucho hacer algo como esto para 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> 

pero yo no veo nada similar a esto en cualquier documentación. ¿Se admite algo como esto? ¿O estoy atascado con el uso de fragmentos para limitar el código y la replicación XML para varios recursos XML? (Creo que esto iba a funcionar, pero no he utilizado fragmentos aún)

Respuesta

19
No

posible que los menús pero factible para diseños.
Ver include etiqueta: https://developer.android.com/training/improving-layouts/reusing-layouts.html

Para el menú:
puede solucionar en el código mediante el inflado de los archivos XML Menu y la adición de elementos de menú individuales:

@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

incluye son una herramienta muy poderosa, y probablemente infrautilizado por una serie de desarrolladores de Android. La solución programática funciona para una capa adicional, pero más allá de eso, aún estamos atascados. la herencia con todas las funciones, como la herencia de clases, sería maravillosa, pero imagino que muchas aplicaciones no la usan realmente. Simplemente no hay buenas opciones que he visto que no violen un principio OOP u otro –

+4

El enlace de arriba está muerto pero lo encontré [aquí] (http://developer.android.com/training/improving- layouts/reusing-layouts.html). Hay otro artículo igualmente interesante de Romain Guy aquí: [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). Espero que esto ayude a alguien. –

+0

Whoa, no tenía ni idea de que podía correr inflar más de una vez, con diferentes menús, gracias por compartir esto – Parker

Cuestiones relacionadas