Wie programmgesteuert eine Menüinstanz erstellen? d. h. ein Menü außerhalb onCreateOptionsMenu aufblasen
Möchte ich aufblasen, um ein Menü-Objekt außerhalb onCreateOptionsMenu
Methode (was bedeutet, dass zu erstellen, die/das Menü anzeigen, wenn der Benutzer nicht die Taste drücken), also ich muss ein Menü erstellen-Instanz zu übergeben es an der inflate-Methode.
Hier ist ein Beispiel, was ich versuche zu erreichen:
Menu menu = //How to create an instance !?
new MenuInflater(context).inflate(R.menu.my_menu, menu)
Menü ist eine Schnittstelle, also muss ich wissen, welche Klasse ist, es umzusetzen. Ich habe durchsuchen Android-code ein, um jeden Hinweis auf wie ein Menü-Objekt erstellt, konnte aber immer noch nicht finden, was ich Suche.
Bearbeiten 1
Mein Ziel ist es, ein Feuer onOptionsItemSelected(MenuItem item)
Ereignis aus einem benutzerdefinierten Ansicht, die bearbeitet werden, werden durch die Aktivität, also brauche ich ein MenuItem-Objekt mit bestimmten itemId und Titel, um es zu übergeben mit der Veranstaltung.
Wenn ich erfolgreich erstellen Sie ein Menü-Objekt, wird es leicht sein, um seine Kinder MenuItems.
Edit 2
Ich bin nicht versuchen, um ein Menü anzuzeigen, was ich will, ist zu füllen eines ListView - mit Elementen definiert eine Menü XML, die Titel -, Symbol-und itemId und immer, wenn ein ListViewItem geklickt wird möchte ich Feuer ein onOptionsItemSelected(MenuItem item)
Veranstaltung behandelt, in meiner Tätigkeit.
Weiß ich, dass ich parse die Menü XML zu extrahieren Elemente von Informationen, aber ich werde nicht in der Lage sein, um das Feuer onOptionsItemSelected(MenuItem item)
ohne eine standard MenuItem-Objekt übergeben es als argument.
Jede Hilfe wird geschätzt. Danke!
InformationsquelleAutor der Frage iTech | 2013-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein trick, um eine Instanz von Menu:
InformationsquelleAutor der Antwort Musma
Fand ich zwei Lösungen, die programmgesteuert erstellen Sie eine Menu-Instanz und Blasen es:
Mit ActionbarSherlock Bibliothek oder AppCompat v7 Bibliothek
Menu menu = new MenuBuilder(context);
oder schreiben Sie Ihre eigenenMenuBuilder
KlasseVerwendung der standard-android-SDK:
//Erzeugen einer Instanz der Reflexion
Sobald Sie eine Menu-Instanz, können Sie ganz einfach aufblasen es ein Menü, aus dem XML-Ressource überall in Ihrem Programm
new MenuInflater(context).inflate(menuId, menu);
Getestet habe ich beide Methoden, und Sie sind perfekt arbeitet, würde ich empfehlen, die zweite Methode mit dem standard -
Menu
undMenuItem
Klassen von android SDK auch wenn Ihre Tätigkeit erstreckt sich SherlockActivity, weil es noch erhaltenonOptionsItemSelected(MenuItem item)
unabhängig davon, ob Sie das Feuer mitandroid.view.MenuItem
odercom.actionbarsherlock.view.MenuItem
InformationsquelleAutor der Antwort iTech
Brauchen Sie nicht, etwas zu tun mit inflator, um fügen Sie Ihre eigenen Menüs. Einfach überschreiben
onCreateOptionsMenu
und starten Sie das hinzufügen Ihrer eigenen Elemente in der Menü Objekt. Zum Beispiel:Das zweite argument in hinzufügen Methode ist die
id
. Verwenden Sie eindeutige ids zum identifizieren des ausgewählten Menüelements.InformationsquelleAutor der Antwort waqaslam
Können Sie pull-Instanz MenuBuilder (implementiert die Menü-Oberfläche) gespeichert in PhoneWindow welches bei Aktivität. Ich habe eine funktionierende Lösung, es nutzt Java Reflection.
Erstellt habe ich ein Projekt "InDroid" zu entlarven einige wichtige versteckte Methoden, Variablen, die von der Android-Plattform- http://code.google.com/p/indroid/
BR,
Prasanta
InformationsquelleAutor der Antwort user542954