2012-10-13 41 views
7

Tôi đã nâng cấp lên phiên bản 4.2 và thấy rằng mã cũ của tôi không biên dịch vì nó xuất hiện chủ đề mẹ ForceOverflow đã bị xóa.ActionBarSherlock ForceTài nguyên luồng không tìm thấy

After Googling this issue có vẻ như nó đã cố tình loại bỏ để duy trì thiết bị nút menu quán.

Tôi hiểu đối số khi sử dụng nút menu vật lý, nhưng tôi không đồng ý với nó ... cộng với nó quá tệ đến mức các menu cũ đó. Tôi thực sự không muốn người dùng nói rằng họ không thể truy cập chức năng trước đó (sau khi tất cả là lý do các nút menu được di chuyển để hiển thị trên màn hình), vậy các tùy chọn của tôi ở đây là gì? Điều này sẽ được thay đổi trong một bản phát hành trong tương lai? Tôi có phải gắn bó với phiên bản trước của ABS và xử lý một số lỗi khác trong thư viện ABS cũ đã được sửa trong các phiên bản gần đây không? Có bất kỳ công việc xung quanh?

+0

tôi quyết định chỉ gắn bó với 4.1 cho bây giờ ... không hài lòng về điều này một trong hai nhưng rất hạnh phúc với ABS ... – dorjeduck

Trả lời

9

Thay vì cố gắng lấy menu mục bổ sung "thực", chúng tôi có thể giả mạo nó bằng một SubMenu.

Nó sẽ giống như và hoạt động giống như nút tràn ban đầu, tốt hơn vì nó sẽ luôn ở đó.

private Menu mainMenu; 
private SubMenu subMenu1; 

    @Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    mainMenu = menu; 

    subMenu1 = menu.addSubMenu(""); 
    subMenu1.add("Settings"); 
    subMenu1.add("About"); 
    subMenu1.add("Help"); 

    MenuItem subMenu1Item = subMenu1.getItem(); 
    subMenu1Item.setIcon(R.drawable.ic_menu_moreoverflow_normal_holo_dark); 
    subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

    return super.onCreateOptionsMenu(menu); 
} 

Tất nhiên bạn có thể đặt subMenus giống như trước đây. Với groudID, itemID, v.v.

Lưu ý rằng tôi đã chọn * ic_menu_moreoverflow_normal_holo_dark * làm biểu tượng menu. Bằng cách này, nút cũng sẽ trông giống như tràn.

Bây giờ, chúng tôi chỉ cần Menu phụ này mở khi người dùng nhấn nút menu phần cứng. Chúng tôi có thể làm điều này rất dễ dàng nếu bạn đặt mainMenu và subMenu1 như tôi đã làm trước đây.

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
      mainMenu.performIdentifierAction(subMenu1.getItem().getItemId(), 0); 
      return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

Ghi chú rằng bạn nhập:

import com.actionbarsherlock.view.SubMenu; 
import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuItem; 

không:

import android.view.MenuItem; 
+0

Xin chào, cảm ơn đoạn mã, nhưng tôi đang gặp phải sự cố. Tôi có một chế độ xem tìm kiếm được thu gọn trong trình đơn chính của mình và bất cứ khi nào tôi nhấn nút menu, chế độ xem tìm kiếm đó mở rộng thay vì menu mục bổ sung. – Asim

+0

Có thể trong phương thức onKeyUp() của bạn, bạn gọi sai submenu. – Sorcerer

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