Associare gli ascoltatori sul menu personalizzato tra le attività in Android
-
20-12-2019 - |
Domanda
Sono nuovo nello sviluppo di Android.Voglio che ogni attività abbia uno stesso menu popup personalizzato in alto a destra.Io uso un LinearLayout in xxmenu.xml
e includerlo nei file xml di layout di ogni attività.Il display è OK.Come il OnClickListener
dovrebbe essere lo stesso, non voglio implementare il OnClick
funzioni nel file Java di ogni attività.Come posso farlo?
So che Android ha una soluzione di menu intrinseca tramite OptionsMenu
, ma non so se può esser personalizzato o come, per esempio, lo voglio su angolo topright, con sfondi diversi, ogni oggetto ha un'icona di immagine seguita da texts
, one-side shadow
, ecc.)
Soluzione 2
Innanzitutto, la soluzione è definire una classe base (ad es., BaseActivity
) estendere Activity
, e le attività effettive usando questo menu per estendere BaseActivity
(es., MainActivity extends BaseActivity
).
In secondo luogo, utilizzare un xml separato per definire il layout del menu e includerlo in altri layout.Un modo semplice per legare gli ascoltatori è usare android:onClick="toggleMenu"
.
In terzo luogo, implementare public void toggleMenu(View v)
in BaseActivity.
Possiamo anche chiamare le viste e fare i binding nel codice Java.Ma ho incontrato un problema di sequenza di codice che se ottengo la vista cliccabile tramite findViewById
in BaseActivity
di onCreate()
, ritorna null
, e l'associazione fallisce.Quindi il ritrovamento delle viste e dei seguenti binding dovrebbe essere fatto nelle classi figlio (ad es., MainActivity
), dopo aver chiamato super.onCreate()
.
Altri suggerimenti
Effettuare una classe Abstract BasActivity che implementa onCreateOptionsMenu
e onOptionsItemSelected
per il tuo menu comune e voci di menu.Quindi rendi tutte le tue altre attività si estendono da quella.