2012-12-25 10 views
6

Buon Natale e buone feste a tutti!aggiungendo listener di clic all'immagine della barra del titolo

Sto provando a impostare un listener sull'icona dell'immagine che appare sul lato sinistro della barra del titolo predefinita, ma finora non ha avuto fortuna.

Ecco onCreate della mia attività:

@Override public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    super.onCreate(savedInstanceState); 
    findViewById(Window.FEATURE_LEFT_ICON).setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      System.out.println("It works!"); 
     } 
    }); 
} 

Qualche suggerimento? Spero di non vedere la risposta "non è possibile" :)

+2

Perché non si utilizza un ActionBar? –

+0

Stai parlando di [questa titlebar] (http://sree.cc/wp-content/uploads/2011/02/image1.jpg)? Se è così, dovresti cercare di implementare un ActionBar, la barra del titolo è ora piuttosto deprecata come idioma dell'interfaccia utente. – dmon

+0

Sì, penso che dovresti usare ActionBar e implementare il metodo 'onOptionsItemSelected()' della tua attività. Credo che l'id dell'icona dell'app su ActionBar sia 'android.R.id.home' – Karakuri

risposta

4

Non sembra essere un ID per l'icona a sinistra, tuttavia per la barra del titolo classica, c'è un ID disponibile: android.R.id.title Qui è un esempio di attività che utilizza questo id. requestWindowFeature(Window.FEATURE_LEFT_ICON); dovrebbe forzare la barra del titolo classica indipendentemente dal tema.

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    setContentView(R.layout.activity_main); 
    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.ic_launcher); 
    View v = findViewById (android.R.id.title); 
    v.setClickable(true); 
    v.setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      Toast.makeText(MainActivity.this, "Works!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
} 

In sostanza, ciò che fa, è che trova l'id della barra del titolo (android.R.id.title) assegna quindi un onClickListener ad esso.

Questo sarà non funziona con ActionBar s, solo le barre del titolo della finestra classica.

+0

Hai provato a farlo funzionare su un telefono? Sto ottenendo un puntatore nullo con il mio Galaxy S3. –

+0

Sì, su 4.0.4. Devi avere un tema classico, come Theme.Black/Theme.Light. I nuovi temi di Holo utilizzano ActionBar, che come altre persone citate usa un'implementazione diversa. –

Problemi correlati