2012-05-14 32 views
5

Tôi sử dụng thanh tác vụ Sherlock trong ứng dụng của mình. Tôi đã sử dụng tính năng "ifRoom | withText" trong trình đơn của mình. Nếu tôi kiểm tra mã của mình ở chế độ dọc, tôi có thể chỉ thấy biểu tượng và nếu tôi xoay hướng sang ngang, tôi vẫn thấy biểu tượng duy nhất. Mặt khác, nếu tôi chạy với phong cảnh, tôi có thể thấy văn bản và biểu tượng trên chân dung và phong cảnh. Điều này có nghĩa là khi màn hình được xoay, thanh tác vụ sẽ không được làm mới. Làm thế nào tôi có thể sửa chữa?Ngăn chặn thanh tác vụ không được làm mới khi hướng được thay đổi

Trong menu, tôi có

android:showAsAction="ifRoom|withText" 

Ngoài ra tôi sử dụng dòng này trong file manifest của tôi để cố định

android:configChanges="keyboardHidden|orientation|screenSize" 

nhưng nó đã không làm việc. Và tôi chạy mã của tôi android 2.3

Ngoài ra tôi sử dụng đoạn trong hoạt động của tôi,

 FragmentManager fm = getSupportFragmentManager(); 
    ft = fm.beginTransaction(); 

    mFragment1 = fm.findFragmentByTag("f1"); 

    if (mFragment1 == null) { 

     mFragment1 = new MenuFragment(); 
     ft.add(mFragment1, "f1"); 

    } 

    ft.commit(); 

Trả lời

6

Xử lý cấu hình thay đổi không được hỗ trợ với ActionBarSherlock.

Trên pre-ICS, ActionBarSherlock KHÔNG là một phần của chế độ xem trang trí như thanh tác vụ gốc và do đó chịu cùng các hạn chế như chế độ xem nội dung của bạn. Bằng cách xử lý các thay đổi cấu hình, bạn không cho phép thư viện thích ứng với thay đổi và do đó sẽ thấy hiển thị không chính xác hoặc một số phần nhất định.

Tài liệu Android cũng không khuyến khích xử lý các thay đổi cấu hình. Tránh chúng bằng mọi giá, đặc biệt khi sử dụng ActionBarSherlock.

Trên ghi chú có liên quan, tôi vẫn đang cố gắng giải quyết vấn đề này cho các phiên bản thư viện trong tương lai nhưng hiện tại bạn nên tránh.

+0

Tôi có một số mã đang được ngồi trong phương pháp onDestroy của tôi, nhưng tôi vừa thêm ABS, mà bây giờ gọi onDestroy khi bạn xoay. Bạn có nghĩ rằng đặt cược tốt nhất của tôi là di chuyển mã đó vào trình xử lý cho nút quay lại không? Cảm ơn – Matt

+0

Bạn được quyền ghi đè lên 'onDestroy' miễn là bạn nhớ gọi phương thức siêu lớp. –

+0

Tôi quên đề cập đến rằng trước đây tôi đã không hủy các hoạt động khi xoay. Vì vậy, tôi đã chuyển mã sang phương thức onBackPressed. – Matt

0

Tôi nghĩ rằng bạn sẽ phải tái tạo menu ActionBar về biến đổi cấu hình

invalidateOptionsMenu(); 
+0

Cảm ơn bạn đã trả lời, tôi đã thử chức năng của bạn trong thay đổi cấu hình nhưng nó không hoạt động. Bạn có ý tưởng nào khác không? – SavasCinar

+0

Đề xuất duy nhất khác của tôi là thử supportInvalidateOptionsMenu(); – Tony

+0

Cảm ơn bạn, nhưng nó vẫn không hiệu quả. Tôi không biết, đâu là vấn đề – SavasCinar

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