2015-05-30 26 views
7

Mam aktywność, która implementuje OnClickListener, a ja obsługi onclick wydarzenie jako poniżej kodu:android pasek narzędzi przycisk nawigacyjny id

void onClick(View v){ 
final int id = v.getId(); 
switch(id){ 
    case R.id.xxx: 
    break; 
} 
} 

i teraz mam pasek też, więc chcę, aby obsłużyć przycisk nawigacyjny Pasek kliknięcie w ten sposób również:

toolbar.setNavigationOnClickListener(this); 

, ale nie znam identyfikatora przycisku nawigacyjnego paska narzędzi. Jak mogę to dostać?

+0

Możesz obsługiwać kliknięcia menu Toolbar w metodzie onOptionsItemSelected(). –

+0

możesz spróbować dodać metodę kliknięcia bezpośrednio na pasku narzędzi, która może ci pomóc, a dla twojej powyższej sytuacji dla przycisku głównego id android.R.id.home – Vickyexpert

+0

dostałeś odpowiednią odpowiedź? Próbuję osiągnąć ten sam kod: – AndroidGuy

Odpowiedz

0

Jeśli pasek narzędzi jest używany jako pasek akcji, identyfikator widoku będzie android.R.id.home, a użytkownik będzie używał onOptionsItemSelected(...), aby wiedzieć, kiedy zostanie naciśnięty.

Jeśli nie jest używany jako pasek akcji, identyfikator widoku to -1, który nie ma zdefiniowanego zasobu identyfikatora.

Czyli trzeba użyć setNavigationOnClickListener() ale w jednej z dwóch metod:

albo:

toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ... 
     } 
    }); 

lub

private View.OnClickListener homeClickListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     ... 
    } 
}; 

@Override 
protected void onCreate(...) { 
    ... 
    toolbar.setNavigationOnClickListener(homeClickListener); 
    ... 
} 
0

Wystarczy wydrukować dziennik, aby uzyskać identyfikator, jak: Log.w("ID: ", ""+v.getId()); W moim przypadku była to wartość -1.

switch(id) 
{ 
    case -1: 
    break; 
} 
+0

Czy możesz wyjaśnić kod i jego zmiany, aby był przydatny dla przyszłych czytelników? – LW001

+0

to identyfikator przycisku nawigacji na pasku narzędzi. Wystarczy wydrukować log, aby uzyskać identyfikator, np .: Log.w ("ID:", "" + v.getId()); – Adolfok3

+1

[edytuj] proszę ... – LW001

Powiązane problemy