2013-04-13 38 views
5

Tôi đang cố gắng thêm nút 'Thêm Mục' ở trên cùng trong thanh hành động. (Ở bên phải của Biểu tượng ứng dụng và Tiêu đề).Thêm 'Thêm Nút' vào thanh tác vụ ở trên cùng khi bạn đã có các tab và menu

Ngay bên dưới thanh tác vụ, tôi có hai tab mà tôi có thể vuốt giữa. Tôi cũng có một tệp XML menu được định nghĩa cho menu cài đặt.

Tôi nghĩ thanh tác vụ cũng sử dụng trình đơn XML. Vì vậy, tôi đã thêm một trình đơn thanh tác vụ XML, nhưng khi tôi sử dụng

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM); 
actionbar.setCustomView(R.menu.actionbar); 

chương trình của tôi bị treo. Tôi tin rằng tôi đang làm điều này hoàn toàn không chính xác.

actionbar My XML:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:id="@+id/item1" android:icon="@android:drawable/ic_menu_add"></item> 


</menu> 

Tôi đọc trên một số hướng dẫn mà tôi dự định thêm các mục vào actionbar và cư nó thông qua chức năng OnCreateOptionsMenu trong MainActivity. Nhưng đó là nơi trình đơn tùy chọn của tôi được điền, không phải thanh tác vụ của tôi.

+0

Bạn có thể vui lòng hiển thị báo cáo logcat để giúp chúng tôi giúp bạn. **Cảm ơn**. – AndroidDev

+0

Bạn có muốn thực hiện 'ActionBar' tùy chỉnh hay bạn chỉ muốn một mục phụ trong' ActionBar' bình thường? – Darwind

+0

Chỉ cần một mục phụ trong thanh tác vụ thông thường. Chỉ cần nút 'thêm' ở trên đó. Tôi đã nhầm lẫn khi đọc để đặt nó trong OnCreateOptions bởi vì đó là nơi tôi cư trú và thực hiện menu tùy chọn của tôi (nút phần cứng). Nếu tôi thay đổi nó để sử dụng thanh hành động, nó sẽ không xóa menu tùy chọn? – CREW

Trả lời

8

Một hoạt động điền vào ActionBar trong phương thức onCreateOptionsMenu() của nó.

Thay vì sử dụng setcustomview(), chỉ cần ghi đè onCreateOptionsMenu như thế này

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mainmenu, menu); 

    return true; 
} 

Nếu một hành động trong ActionBar được chọn, phương pháp onOptionsItemSelected() được gọi. Nó nhận hành động được chọn làm tham số. Dựa trên thông tin này bạn mã có thể quyết định việc cần làm ví dụ:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.menuitem1: 
      Toast.makeText(this,"Menu Item 1 selected",Toast.LENGTH_SHORT).show(); 
      break; 
     case R.id.menuitem2: 
      Toast.makeText(this,"Menu item 2 selected",Toast.LENGTH_SHORT).show(); 
      break; 
     default: 
      break; 
    } 

    return true; 
} 
+0

Tôi đã có một OnCreateOptionsMenu trong hoạt động chính của mình. Nó đang được sử dụng cho menu tùy chọn bật lên khi bạn nhấn nút cài đặt phần cứng. Tôi có đổi R.menu.mainmenu thành R.menu.actionbar không? Có cách nào để giữ cả menu cài đặt của tôi VÀ có thanh tác vụ được điền không? – CREW

+0

Thay đổi thành R.menu.mainmenu trong oncreateoptionsmenu() @CREW của bạn – AndroidDev

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