Nella mia app per Android voglio raccogliere statistiche su quando (quanto spesso) il menu della barra di azione di overflow (tre punti) viene aperto e chiuso (senza selezionare un elemento). Per questo compito ho superato i metodi onMenuOpened
e onPanelClosed
all'interno di uno Activity
. Tuttavia, su tutti i dispositivi (Android 4.4, 4.2, Samsung e HTC) ho provato fino ad ora questi metodi vengono attivati due volte, ogni volta che il menu viene aperto e chiuso. Si tratta di un bug? C'è un altro modo per monitorare questo menu di apertura e chiusura?Double callback onMenuOpened/onPanelClosed su ciascun pulsante del menu premere
5
A
risposta
6
si può provare questo ... ho provato .... funziona perfettamente ....
@Override
public void onActivityCreated(Bundle savedInstanceState) {
Activity activity = getActivity();
activity.getActionBar().addOnMenuVisibilityListener(new OnMenuVisibilityListener() {
@Override
public void onMenuVisibilityChanged(boolean isVisible) {
// TODO Auto-generated method stub
//you can check the isVisible boolean to check
// if the overFlowMenu is visible or not
}
});
0
scoperto una soluzione migliore
public boolean onPrepareOptionsMenu(Menu menu) {
if (hasWindowFocus()) {
// gets called every time user taps on menu
Log.v(TAG, "onPrepareOptionsMenu - focus");
} else {
// gets called when menu is being initialized
Log.v(TAG, "onPrepareOptionsMenu - NO FOCUS");
}
return super.onPrepareOptionsMenu(menu);
}
È possibile raccogliere le sue statistiche in la parte "messa a fuoco" dell'istruzione If.
1
ho avuto la stessa domanda, come voi, e trovare un modo più semplice per risolverlo:
Quando la prima volta che entra onMenuOpened(), menù è nullo. Il menu non è ancora pronto. Quindi, è possibile controllare come di seguito
@Override
public boolean onMenuOpened(int featureId, Menu menu){
if(menu!=null){
//log something like firebaseLogEvent("Action", "onMenuOpened");
}
return true;
}
Problemi correlati
- 1. Come disattivare l'ombreggiatura del pulsante sul pulsante premere UIButton?
- 2. Aggiorna visualizzazione contenitore sul pulsante Premere
- 3. Premere a lungo su UITableView
- 4. Attività fotocamera predefinita non finita Su OK pulsante premere
- 5. Come pulsante del menu stile e voci di menu
- 6. Come evidenziare il pulsante del menu?
- 7. Pulsante rotondo in Android .. evitare di premere "fuori" il pulsante?
- 8. Pulsante Android selezionare e premere drawable
- 9. listener per premere e rilasciare un pulsante
- 10. Pulsante menu Android non visualizzato
- 11. Ignora convalida su commandButton premere
- 12. Come posso passare argomenti al comando callback del pulsante Tkinter?
- 13. percorsi di backbone - rilevamento del pulsante di ritorno del browser premere
- 14. Iterate su ciascun elemento di pari livello
- 15. ActionBarSherlock menu di scelta rapida colore del menu del menu
- 16. WPF forzatura del mouse su dispositivo da premere
- 17. Pulsante ui-grid-menu esterno
- 18. Libgdx: C'è un modo semplice per centrare il testo su ciascun asse su un pulsante?
- 19. android - mostra il pulsante menu su galaxy nexus
- 20. Intercettazione del pulsante Menu Android in una finestra popup
- 21. Come premere due volte un pulsante con Google UiAutomator?
- 22. premere il pulsante per aprire la pagina web da app
- 23. Come fare un pulsante div flip on premere?
- 24. C#: double [] [] e double [,]
- 25. ReactJs: Prevenire più volte premere il tasto
- 26. Premere il pulsante Salva di "Finestra di download del file" di internet explorer via C#
- 27. Google plus pulsante di condivisione personalizzato callback
- 28. Double vs float su iPhone
- 29. Mostrando il pulsante del menu su ICS mantenendo Android: targetSdkVersion per essere 14
- 30. Perché il menu a discesa del pulsante Bootstrap non funziona su iOS?
@Leo K: si prega di votare la mia risposta, se u trovare utile –
Si prega di cercare di migliorare la scrittura di vostra risposta. Inoltre, commentare il codice potrebbe aiutare. – fedorqui
Accetterò la tua risposta. Tuttavia, vorrei aggiungere che ho già provato questo approccio in precedenza e che ha provocato lo stesso bug descritto nella domanda. Tuttavia, stavo impostando il listener su onCreateOptionsMenu, impostando il listener all'interno di onCreated invece risolto questo. In conclusione, questo approccio funziona. Inoltre, non sono proprio sicuro del motivo per cui hai suggerito di utilizzare il campo isOverflowMenuOpen, non è realmente necessario che il parametro isVisible fornisca le stesse informazioni. –