2015-11-29 6 views
5

Ho un menu su Android e voglio mostrare un semplice snackbar ovunque dopo che c'è stato un clic su una voce di menu. Qualunque cosa ho messo qualcos'altro invece di "???" non funziona L'intera app proviene dal modello di visualizzazione tab predefinito di Android Studio. Questo è il codice che ho:Mostra una barra di snack a un evento di menu in Android

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     Snackbar.make("????", "Pressed Setting", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
    } 
    if (id == R.id.help_settings) { 
     Snackbar.make("???", "Pressed Help", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
    } 
    return super.onOptionsItemSelected(item); 
} 

Perché si comporta in questo modo? E come posso ripararlo?

+0

Si sta utilizzando un CoordinatorLayout? –

+0

Devi passare 'view' lì. – activesince93

risposta

5

Change

Snackbar.make("???", ....) 

a

Snackbar.make(getWindow().getDecorView(), .....); 

È necessario passare un View al Snackbar s' staticoMetodo.

3

Ecco come si mostra Snackbar sulla voce di menu click:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     Snackbar.make(this.findViewById(R.id.action_settings), "Pressed Setting", Snackbar.LENGTH_LONG).show(); 
    } 
    if (id == R.id.help_settings) { 
     Snackbar.make(this.findViewById(R.id.help_settings), "Pressed Help", Snackbar.LENGTH_LONG).show(); 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

Ricevo un messaggio di errore quando si preme la voce di menu. La risposta qui sotto funziona bene. – Amir

1

Ho provato questo, ha funzionato con me

public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    switch (id) { 
     case R.id.action_settings: 
      Snackbar.make(getCurrentFocus(), "U Clicked Settings",Snackbar.LENGTH_LONG).setAction("Action", null).show(); 
      return true; 
    } 
} 
0

questo ha funzionato per me thx, mi mancava il .Show()

Snackbar.make(getCurrentFocus(),"settings clicked",Snackbar.LENGTH_LONG).show(); 
Problemi correlati