2012-03-18 40 views
5

Tôi sử dụng tính năng kích hoạt sherlockfragmentactivity có một ViewPager, hai Fragment và ActionBar hiển thị hai tab. Tôi điền các mục tác vụ từ đoạn nhưng tôi phải gọi phương thứcActionItem bị mất trên xoay màn hình

setHasOptionsMenu(true); 

theo thứ tự hiển thị đoạn trình đơn Actionbar MenuItem. Nhưng khi định hướng màn hình thay đổi, MenuItems không được hiển thị.

Đây là mã của tôi để tạo ra một trình đơn tùy chọn trong đoạn đầu tiên của tôi:

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.add(R.string.action_refresh).setIcon(R.drawable.ic_menu_refresh) 
      .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { 

       public boolean onMenuItemClick(MenuItem item) { 
        refresh(); 
        return false; 
       } 
      }).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(R.string.action_add_a_file).setIcon(R.drawable.ic_menu_upload) 
      .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(R.string.action_settings).setIcon(android.R.drawable.ic_menu_preferences) 
      .setIntent(new Intent(getSherlockActivity(), SettingsActivity.class)) 
      .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_NEVER | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

} 

Có cách nào để thêm đúng mục vào thanh hành động từ một SherlockFragment và làm thế nào tôi có thể giữ cho các mục trong ActionBar sau thay đổi hướng màn hình?

+2

Tôi không biết đó có phải là giải pháp tốt nhất hay không, vì tôi có một số đoạn cố định đã biết, tôi khởi tạo chúng trong phương thức 'onCreate' trên SherlockActivity và gọi sau khi instanciation:' invalidateOptionsMenu(); ' phương thức 'onActivityCreated' của các mảnh của tôi, sau những gì tôi phải làm ở đó, tôi gọi' setHasOptionsMenu (true); '. Vì vậy, ActionItems của tôi được hiển thị cho từng đoạn ngay cả sau khi định hướng màn hình. – Kowlown

Trả lời

0

add dòng sau đây vào FragmentActivity của bạn trong file manifeast android:configChanges="orientation"

định hướng được tự động xử lý bởi hệ thống riêng của mình. nhưng tôi không biết thời tiết nó là một cách hiệu quả hay không.

+0

+1. Nhờ công việc của nó .. –

+0

sử dụng 'android: configChanges =" orientation "' là [không được khuyến nghị] (http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html#bad -practice-retain-the-activity) – matoni

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