2012-04-23 42 views
19

Tôi đã cố gắng thêm một nút vào SherlockActionBar nhưng tôi không thể làm cho nó hoạt động.Thêm một nút vào ActionBar với ActionBarSherlock

Đây là mã mà tôi có:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     android.view.MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, (android.view.Menu) menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

Đây là mã menu.xml tôi:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/save_button" 
      android:title="i" 
      android:showAsAction="always" /> 
</menu> 

này không hoạt động, như ngay cả khi tôi nhấn nút menu, không có gì xuất hiện . Có cách nào khác không? Tôi có mắc sai lầm gì không?

Trả lời

38

Bạn đang sử dụng Menu và MenuInflater của Android, nhưng nên sử dụng các lớp học mà đi kèm với ActionBarSherlock:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.menu, (com.actionbarsherlock.view.Menu) menu); 
    return super.onCreateOptionsMenu(menu); 
} 

Nó có vẻ như bạn đang làm lẫn hai ngay bây giờ. Đảm bảo rằng bạn chỉ nhập com.actionbarsherlock.view.Menu và com.actionbarsherlock.view.MenuInflater chứ không phải đối tác Android của nó. Tôi khuyên bạn nên làm điều gì đó như sau:

import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 

... 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 
+0

hoạt động này thật tuyệt vời, nhưng, có thể có nút trên tất cả các hoạt động và đoạn của tôi trong ứng dụng không? – noloman

+0

Có. Tạo một hoạt động cơ sở có chứa onCreateOptionsMenu (...) ở trên. Tiếp theo mở rộng hoạt động này trong các hoạt động mà bạn muốn ActionBar hiển thị. – hanspeide

+0

Cảm ơn giải pháp tuyệt vời !! – ASP

19

Tôi nghĩ trong menu.xml. Mặt hàng của bạn không khai báo hoàn toàn thuộc tính android: showAsAction. Bạn phải khai báo nó như thế này:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/save_button" 
      android:title="i" 
      android:showAsAction="always|withText" /> 
</menu> 

Vì bạn đã không chỉ định bất kỳ biểu tượng cho thanh tác vụ mục không thể hiển thị bất kỳ mục nào. Theo biểu tượng mặc định là hiển thị văn bản.

Nếu bài đăng này giúp bạn, vui lòng đánh dấu câu trả lời này là câu trả lời.

Cảm ơn.

+1

thanx! Exaclty là tôi đang tìm kiếm !! ps loại bỏ không gian ("luôn luôn | withText") – Paschalis

+0

sử dụng cả hai câu trả lời được chấp nhận (bởi hanspeide) và câu trả lời này, có kết quả cuối cùng của việc có một thanh hành động với một biểu tượng trên đó. Cảm ơn ! – Muzikant

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