2015-11-29 11 views
5

Mam menu na Androida i chcę pokazać prosty pasek z przekąskami w dowolnym miejscu po kliknięciu pozycji menu. Cokolwiek wkładam w coś innego zamiast "???" nie działa. Cała aplikacja pochodzi z domyślnego szablonu widoku kart z Androidem. Oto kod, który mam:Pokaż pasek z przekąskami w menu kliknij wydarzenie w Androidzie

@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); 
} 

Dlaczego tak się zachowuje? I jak mogę to naprawić?

+0

Używasz CoordinatorLayout? –

+0

Musisz przekazać tam widok "view". – activesince93

Odpowiedz

5

Zmień

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

do

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

Musisz zdać w View do Snackbar „s statycznymake metoda.

3

ten sposób można pokazać Snackbar na pozycji menu kliknij:

@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

Po naciśnięciu elementu menu pojawia się komunikat o błędzie. Poniższa odpowiedź działa dobrze. – Amir

1

Próbowałem to, że pracował ze mną

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

ten pracował dla mnie thx, byłem brakuje .Show()

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