OnCreateOptionsMenu antes de onCreate android

Soy principiante a androide y estoy desarrollando la pequeña aplicación androide. En mi aplicación estoy usando la biblioteca de Sherlock. Mi aplicación contiene una actividad principal y dos fragmentos. En la estructura de mi lista de fragmentos se ve como

public class MyCards extends SherlockListFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside fragment on create"); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on activity created"); } private void displayCards(int type) { Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside display cards"); } @Override public void onResume() { super.onResume(); } @Override public void onPause() { super.onPause(); } @Override public void onDestroy() { super.onDestroy(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.mycards, container, false); View view1 = inflater.inflate(R.layout.empty_card, container, false); return view; } /*@Override public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); optionsMenu = menu; }*/ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_type2, menu); Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on create option menu"); Spinner spinner = (Spinner) menu.findItem(R.id.cardType) .getActionView(); SpinnerAdapter adapter = ArrayAdapter.createFromResource(getSherlockActivity().getSupportActionBar().getThemedContext(), R.array.card_action_list,android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); // set the adapter spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { displayCards(pos); Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on option selected"); } @Override public void onNothingSelected(AdapterView<?> arg0) { displayCards(0); Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on no option selection"); } }); @Override public boolean onOptionsItemSelected(MenuItem item) { Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside option select listener"); } } 

Ahora mi problema es que cuando cambia de un fragmento a otro fragmento por primera vez da siguiente salida de registro

 01-04 00:54:06.997: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(2575): inside on create option menu 01-04 00:54:06.997: W/KeyCharacterMap(2575): No keyboard for id -1 01-04 00:54:06.997: W/KeyCharacterMap(2575): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 01-04 00:54:07.020: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(2575): inside fragment on create 01-04 00:54:07.036: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(2575): inside on activity created 

Que significa en la opción de creación llamada antes onfragment crear y en la actividad crear. Y también dando dos advertencia. Este trabajo sin ningún error. Pero no puedo mostrar la vista de lista

Ahora, cuando vuelvo a cambiar al mismo fragmento (por segunda vez), da la siguiente salida de registro

 02-07 10:05:10.983: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside on create option menu 02-07 10:05:11.023: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside fragment on create 02-07 10:05:11.043: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside on activity created 02-07 10:05:11.113: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside display cards 02-07 10:05:11.133: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside on option selected 

Esta vez no está dando ninguna advertencia y funciona correctamente. También muestra mi vista de lista. Pero por primera vez no funciona correctamente .. Otro punto es que cuando lo corrí en la versión superior de android su funcionamiento bien. Pero si lo corría en la versión más baja de Android como 2.3.3 i muestra este comportamiento .. He leído sobre este ListFragment onPrepareOptionsMenu llamado antes onCreate. ¿Por qué y cómo corregir / evitar? Pero no soy capaz de resolver este problema.

Si defino setHasOptionsMenu(true) dentro onActivityCreated da la siguiente salida

 01-04 03:32:38.622: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(8157): inside fragment on create 01-04 03:32:38.653: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(8157): inside on activity created 01-04 03:32:38.692: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(8157): inside on create option menu 01-04 03:32:38.700: W/KeyCharacterMap(8157): No keyboard for id -1 01-04 03:32:38.700: W/KeyCharacterMap(8157): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 

También traté de establecer setHasOptionsMenu para mi fragmento donde la transacción de fragmento real tiene lugar como a continuación ..

 @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { MyCards mc = new MyCards(); mc.setHasOptionsMenu(true); ft = mActivity.getSupportFragmentManager().beginTransaction(); mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs); ft.add(android.R.id.content, mFragment, mTag); ft.commit(); } 

Y todavía dando el mismo problema.

Cualquier problema con mi código o algo más? Así que cómo resolver este problema. Necesita ayuda … gracias …

Escriba setHasOptionsMenu(true); En el onActivityCreated(Bundle savedInstanceState) .

No sé por qué funciona así, pero haga esto: Establezca la opción setHasOptionsMenu(true) en su actividad cuando agregue su fragmento a ella.

Por ejemplo:

 //Activity class YourListFragment f = new YourListFragment(); f.setHasOptionsMenu(true); //here getSupportFragmentManager().beginTransaction() .add(R.id.your_list_fragment_container, f).commit(); 

Y elimínalo en el código de tu fragmento. Funcionó para mí.

  • Android: cambia el ancho del menú de desbordamiento
  • Java.lang.illegalstateexception: ya se ha establecido una fábrica en este layoutinflater
  • Iconos del sistema Android semi-transparentes
  • Menú de opciones de Android en fragmento
  • Hacer clic en icono de hamburguesa en la barra de herramientas no abre Cajón de navegación
  • El menú de opciones de onCreate no se muestra en android 3.1
  • Usando invalidateOptionsMenu () con el sistema de inicio de sesión (Android)
  • Problema con Android OptionsMenu, el fondo siempre es transparente
  • configuración del color de fondo del panel de opciones del menú manualmente
  • El menú Opciones no incluye los iconos
  • Ajustar el icono al grupo en el menú de opciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.