2011-11-06 28 views
9

Tôi gặp vấn đề này với dự án Android ActionBarCompat: Trên trình giả lập Android 4.0, nhấp vào biểu tượng ứng dụng không gây ra bất kỳ sự kiện onOptionsItemSelected nào, trong khi nó hoạt động trên tất cả các sự kiện khác Phiên bản hệ điều hành.ActionBarCompat - Hành động biểu tượng ứng dụng (nhấp chuột) không hoạt động trên các thiết bị 4.0

Bất kỳ đầu vào nào được đánh giá cao!

Trả lời

22

Bạn có thấy bất kỳ phản hồi chạm nào từ biểu tượng ứng dụng không? (Nó có phát sáng khi bạn nhấn không?)

Vì nhiều hoạt động không sử dụng nút trang chủ của thanh hành động, trong các ứng dụng nhắm mục tiêu API 14+ chạy trên Android 4.0, nó sẽ bị tắt theo mặc định. (Điều này là để người dùng không thử nhấn nó, xem nó phát sáng, và tự hỏi tại sao không có gì xảy ra.) Các ứng dụng muốn sử dụng điều này nên gọi ActionBar#setHomeButtonEnabled(true).

Có lẽ chúng ta nên sửa lại mẫu ActionBarCompat để hiển thị rõ ràng hơn. Một cách đơn giản để giúp bạn có được và chạy sẽ được sửa đổi ActionBarHelperICS.java và thêm dòng sau:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mActivity.getActionBar().setHomeButtonEnabled(true); 
} 

Trong một ứng dụng mà bạn muốn kiểm soát nhiều hơn biến này và tắt bạn muốn thực hiện thay đổi thêm.

+0

cảm ơn bạn đã làm đúng. – Mikey

+1

Chỉ cần lưu ý, điều này [được đề cập trong các tài liệu] (http://developer.android.com/guide/topics/ui/actionbar.html#Home), nó chỉ dễ dàng bỏ lỡ vì đó là "Lưu ý". – srunni

+0

Nó không làm việc cho tôi. Thêm mã này tôi nhận được lỗi trong Eclipse. Nhiều điểm đánh dấu tại dòng này \t - Cuộc gọi yêu cầu cấp API 14 (min hiện tại là 4): \t android.app.ActionBar # setHomeButtonĐã tắt bằng cách thêm api api – tobias

3

Tôi cũng gặp sự cố này. Mã này đã thực hiện thủ thuật cho tôi:

public void onCreate(Bundle savedInstanceState) { 
    ... 
    if (android.os.Build.VERSION.SDK_INT >= 11) { 
     //noinspection ConstantConditions 
     getActionBar().setHomeButtonEnabled(true); 
    } else { 
     getSupportActionBar().setHomeButtonEnabled(true); 
    } 
} 

Một số thông tin bổ sung: minSdkVersion="7" targetSdkVersion="18". Đây là hoạt động LAUNCHER của dự án của tôi, vì vậy nó không có hoạt động gốc. Sử dụng setDisplayHomeAsUpEnabled(true) trong các hoạt động khác chỉ hoạt động tốt.

+0

điều này phải được chấp nhận câu trả lời - đó là điều duy nhất đã giúp tôi – AndrewS

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