2012-03-18 15 views
5

Utilizo una actividad de fragmentación de sherlock que tiene un ViewPager, dos Fragment y una ActionBar que muestra dos pestañas. Me rellenar los elementos acciones desde el fragmento, pero tengo que llamar al métodoActionItem perdido en la rotación de pantalla

setHasOptionsMenu(true); 

con el fin de que la pantalla del fragmento actionbar Menultem. Pero cuando la orientación de la pantalla cambia, los elementos del menú no se muestran.

Aquí está mi código para crear un menú de opciones en mi primer fragmento:

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); 

} 

¿Hay una manera de agregar correctamente elemento a la barra de acciones de una SherlockFragment y cómo puedo mantener estos elemento en la Barra de acciones después de cambio de orientación de pantalla?

+2

No sé si es la mejor solución pero dado que tengo un número fijo de fragmentos conocidos, los instauro en el método 'onCreate' en mi SherlockActivity y llamo después de la instanciación:' invalidateOptionsMenu(); 'Then in el método 'onActivityCreated' de mis fragmentos, después de lo que tengo que hacer allí lo llamo' setHasOptionsMenu (true); '. Por lo tanto, mis elementos de acción se muestran para cada fragmento incluso después de la orientación de la pantalla. – Kowlown

Respuesta

0

complemento siguiente línea en su FragmentActivity en el archivo manifeast orientación android:configChanges="orientation"

se maneja de forma automática por el propio sistema. pero no sé si el clima es una manera eficiente o no.

+0

+1. Funcionó gracias .. –

+0

usando de 'android: configChanges =" orientation "' es [no recomendado] (http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html#bad -practice-retain-the-activity) – matoni

Cuestiones relacionadas