Anfänglich verstecktes MenuItem nicht angezeigt Wenn setVisible (true) aufgerufen wird

Ich habe ein Grundproblem, bei dem ein anfänglich verstecktes MenuItem nicht sichtbar gemacht werden kann. Als ein Vorbehalt, ich benutze ActionBarSherlock, aber ich wollte sehen, ob jemand wusste, ob dies eine bekannte Frage von Android war oder ich mache etwas Schreckliches vor der Untersuchung, ob dies ein Problem innerhalb von ABS ist. Code wie folgt:

@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getSupportMenuInflater(); inflater.inflate(R.menu.menu_xml, menu); mMenuItem = menu.findItem(R.id.menu_item); mMenuItem.setVisible(false); return true; } // Somewhere elsewhere // MenuItem is never visible after this line is executed mMenuItem.setVisible(true); 

Ich habe auch versucht, die mMenuItem Zuweisung und Sichtbarkeit in einen Aufruf zu onPrepareOptionsMenu zu verschieben, aber das gleiche Verhalten wird angezeigt.

  • Ändern Sie den Anwendungspaketnamen über Android Studio
  • Facebook SDK + SlidingMenu SDK = Jar Mismatch! Beheben Sie Ihre Abhängigkeiten
  • Zeichne den Text in OpenGL ES
  • Benutzerdefinierte Position des Hinweises im Textfeld bearbeiten.
  • Launch facebook App aus anderen App
  • Android Studio Inline Compiler mit roten Fehlern, aber Kompilation mit Gradle funktioniert gut
  • Vielen Dank!

  • ExpandableListFragment mit LoaderManager für Kompatibilitätspaket
  • Koordinator Layout benutzerdefinierte Layout Verhalten nie aufgerufen werden
  • "Java: package org.apache.cordova existiert nicht" bei der Kompilierung von Cordova in Android Studio
  • Warum ist Fragment.addToBackStack () die Back-Taste, um nichts zu tun?
  • Ionic kann nicht ionische Plattform Android laufen
  • Wie kann ich den Android Emulator die Softtastatur zeigen?
  • 4 Solutions collect form web for “Anfänglich verstecktes MenuItem nicht angezeigt Wenn setVisible (true) aufgerufen wird”

    Das Problem ist, dass du nicht Android erzählst, dass es das Menü aktualisieren muss. Das hat mich für die letzte Stunde verrückt gemacht, bis ich eine Lösung herausgefunden habe. Ich glaube nicht, dass es so offensichtlich auf Pre-HC ist, weil Menüpunkte nicht immer auf dem Bildschirm sichtbar sind, wie sie in HC + sind.

    Auf deine Tätigkeit ruf einfach an:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { this.invalidateOptionsMenu(); } 

    Das wird einen Aufruf zum onCreateOptionsMenu () – Ereignis erneut auslösen, also wenn du die Sichtbarkeit in dieser Funktion zur Initialisierung einsetzst, musst du dann berücksichtigen, wenn du die Option zum Anzeigen oder nicht haben willst.

    Ich hatte das gleiche Problem und ich habe herausgefunden, dass setVisible(true) funktioniert, wenn es mindestens ein anderes MenuItem . Ich hoffe das kann für jemanden hilfreich sein.

    Ich habe festgestellt, dass mit einem View-Post (Runnable) -Methode zu setVisible macht den Trick, so etwas wie …

     view.post(new Runnable() { @Override public void run() { menu.findItem(id).setVisible(true); } }); 

    Ich verstehe das ist alte Frage.
    Aber ich habe es gelöst, indem onPrepareOptionMenu() {...}

     private boolean mShowVisible=false; @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.menu_item).setVisible(mShowVisible); return super.onPrepareOptionsMenu(menu); } 

    Wann immer du sichtbar sein willst oder nicht einfach nennen sie als:

     mShowVisible = true; // or false invalidateOptionMenu(); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.