22

Tôi không thể có menu tùy chọn để hiển thị trong Phân đoạn trong ICS trong dự án sử dụng thư viện android-support-v4.jar. Tôi đang thử nghiệm trên điện thoại Galaxy Nexus.Trình đơn tùy chọn không hiển thị trong ICS sử dụng thư viện tương thích

Chúng tôi không sử dụng thanh tác vụ và cần ứng dụng tương thích với 2,2+. Chúng tôi không thấy bất kỳ menu tùy chọn nào trong hoạt động trong ICS (FragmentActivity không hỗ trợ onCreateOptionsMenu)

Tôi có thể tải các menu hoạt động trong phiên bản Android trước - Tôi có tất cả các khung chính xác để bật menu tùy chọn (như bên dưới) nhưng không có gì hiển thị trong ICS. Khi bước qua mã, onCreateOptionsMenu không được gọi. Bất cứ ai có thể đề nghị một sửa chữa?

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 

public class SuperFragment extends Fragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     setHasOptionsMenu(true); 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.display_options_actions, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch(item.getItemId()) { 
      case R.id.menu_sign_in: 
       break; 
      case R.id.menu_sign_out: 
       break; 
     } 
     return true; 
    } 
    // ... 
} 

Target OS phiên bản trong file manifest:

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="14"/> 
+0

Việc xem danh sách nhập của bạn ở đây sẽ hữu ích; bạn đang sử dụng các mảnh thư viện hỗ trợ hay android.app.Fragment từ khung công tác? Bạn có thấy bất kỳ mục menu nào khác từ hoạt động không? Hoạt động của bạn có sử dụng thanh tác vụ không? TargetSdkVersion của bạn trong tệp kê khai của bạn là gì? – adamp

+0

Cảm ơn nhận xét của bạn, tôi đã thêm một số chi tiết vào câu hỏi của tôi – Martyn

Trả lời

32

Loại bỏ android:targetSdkVersion="14" từ manifest cho phép nút menu tùy chọn một lần nữa.

Điều này là do tôi có chủ đề là @android:style/Theme.Black.NoTitleBar được chỉ định trong tệp kê khai của mình - với android: targetSdkVersion của 14, menu tùy chọn đang được chèn vào menu thanh tác vụ, trái ngược với nút menu tùy chọn trong thanh nút ở cuối màn hình và chủ đề đang xóa tiêu đề hoạt động và thanh tác vụ.

The action bar can be removed, mặc dù tôi không chắc chắn nếu điều này sẽ khắc phục vấn đề như tôi chưa làm cho nó làm việc để nó tương thích trên các phiên bản 2.2 - 4.

+4

Khóa không phải là MỤC TIÊU 14, nhưng để bao gồm nó vẫn là maxSDK. Bằng cách này ICS cố gắng để làm cho menu cũ chuyển tiếp tương thích và không mong đợi một ActionBar –

+4

Trên thực tế, điều quan trọng là mục tiêu là ít hơn 11. Chúng tôi tìm thấy điều này ra ngày hôm nay. Đau đầu dữ dội! Chúng tôi nghĩ rằng không sử dụng chủ đề ActionBar sẽ cho phép trình đơn tương thích, Rõ ràng là không! –

+0

Thật là một nỗi đau! Điều này đã cho tôi đi với menu cho bây giờ. Cảm ơn! điều này làm cho mục tiêu mặc định thành 1. Nó có thể gây ra sự cố với các tiện ích không tương thích khác mà bạn có thể đã sử dụng trong ứng dụng của mình. – Ramp

2

Theo CDD Android, cắt cho hành vi mới không hiển thị menu tùy chọn là targetSdkVersion> 10. Tùy chọn của bạn là chạy ứng dụng của bạn ở chế độ cũ với targetSdkVersion < = 10 hoặc điều chỉnh ứng dụng của bạn theo hướng dẫn mới (ví dụ: thêm nút menu trong ứng dụng của bạn hoặc sử dụng thanh tác vụ). Lưu ý rằng bạn không phải tăng phiên bản xây dựng đích (các thuộc tính dự án trong nhật thực) để tăng targetSdkVersion.

11

Chỉ cần thay đổi android: targetSdkVersion từ "14" thành "10" (ít hơn 11) và sự cố này sẽ được giải quyết.

<uses-sdk android:minSdkVersion="3" 
     android:targetSdkVersion="10" /> 
Các vấn đề liên quan