Frage

Ich bin neu in der Android-Entwicklung.Ich möchte, dass jede Aktivität oben rechts das gleiche benutzerdefinierte Popup-Menü hat.Ich verwende ein LinearLayout in xxmenu.xml und fügen Sie es in die Layout-XML-Dateien jeder Aktivität ein.Die Anzeige ist in Ordnung.Als die OnClickListener sollte gleich sein, ich möchte das nicht implementieren OnClick Funktionen in der Java-Datei jeder Aktivität.Wie kann ich das machen?

Ich weiß, dass Android über eine inhärente Menülösung verfügt OptionsMenu, aber ich weiß nicht, ob oder wie es angepasst werden kann (z. B. ich möchte es in der oberen rechten Ecke haben, mit unterschiedlichen Hintergründen, jedes Element hat ein Bildsymbol, gefolgt von texts, one-side shadow, usw.)

War es hilfreich?

Lösung 2

Die Lösung besteht zunächst darin, eine Basisklasse zu definieren (z. B. BaseActivity) erweitern Activity, und die eigentlichen Aktivitäten können über dieses Menü erweitert werden BaseActivity (z.B., MainActivity extends BaseActivity).

Zweitens: Verwenden Sie eine separate XML-Datei, um das Menülayout zu definieren und es in andere Layouts einzubinden.Eine einfache Möglichkeit, die Zuhörer zu binden, ist die Verwendung android:onClick="toggleMenu".

Drittens: Implementieren public void toggleMenu(View v) in BaseActivity.

Wir können die Ansichten auch aufrufen und die Bindungen im Java-Code vornehmen.Aber ich bin auf ein Codesequenzproblem gestoßen, das auftrat, wenn ich die anklickbare Ansicht über erhalte findViewById In BaseActivity'S onCreate(), es kehrt zurück null, und die Bindung schlägt fehl.Daher sollte das Finden der Ansichten und der folgenden Bindungen in den untergeordneten Klassen erfolgen (z. B. MainActivity), nach dem Anruf super.onCreate().

Andere Tipps

Erstellen Sie eine abstrakte BaseActivity-Klasse, die implementiert onCreateOptionsMenu Und onOptionsItemSelected für Ihre gemeinsamen Menüs und Menüpunkte.Dann lassen Sie alle Ihre anderen Aktivitäten davon ausgehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top