2011-11-18 30 views
14

Có thể kế thừa và mở rộng tài nguyên XML trong Android dễ dàng, cụ thể cho các menu.Thừa kế và mở rộng tài nguyên XML (menu)

Ví dụ: nếu base_menu.xml của tôi là

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

Cả hai tùy chọn tôi muốn sử dụng lại ở nơi khác (trong hoạt động khác). thay vì lặp lại các thẻ cho các mục trong base_menu, tôi rất muốn làm một cái gì đó như thế này cho 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> 

nhưng tôi không thấy bất cứ điều gì tương tự như sau trong bất kỳ tài liệu. Có bất kỳ thứ gì như thế này được hỗ trợ hay không, tôi có bị mắc kẹt với việc sử dụng các đoạn mã để giới hạn mã và sao chép XML cho các tài nguyên XML khác nhau không? (Tôi tin rằng điều này sẽ hiệu quả, nhưng tôi vẫn chưa sử dụng các đoạn)

Trả lời

19

Không thể cho menu nhưng có thể làm cho bố cục.
Xem include tag: https://developer.android.com/training/improving-layouts/reusing-layouts.html

Đối với menu:
Bạn có thể làm việc xung quanh trong mã của lạm phát các file đơn xml và thêm các mục menu duy nhất:

@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

Bao gồm là một công cụ rất mạnh mẽ, và có lẽ không được sử dụng bởi một số nhà phát triển Android. Cách giải quyết có lập trình hoạt động cho một lớp bổ sung, nhưng ngoài ra, chúng tôi vẫn bị mắc kẹt. thừa kế đầy đủ tính năng, như thừa kế lớp, sẽ là tuyệt vời, nhưng tôi tưởng tượng nhiều ứng dụng không thực sự sử dụng nó. Chỉ có không phải là bất kỳ lựa chọn tốt tôi đã nhìn thấy mà không vi phạm một nguyên tắc OOP hoặc khác –

+4

Các liên kết ở trên là chết nhưng tôi thấy nó [ở đây] (http://developer.android.com/training/improving- layout/reusing-layouts.html). Có một bài viết tương tự thú vị khác của Romain Guy tại đây: [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). Hy vọng điều này sẽ giúp một ai đó. –

+0

Whoa, tôi không biết bạn có thể chạy phồng lên nhiều lần, với các menu khác nhau, cảm ơn vì đã chia sẻ điều này – Parker

Các vấn đề liên quan