2014-04-02 1 views
10

Secondo Google's document, è necessario getActionBar().setDisplayHomeAsUpEnabled(true) per visualizzare il pulsante su. Ho creato un'attività bare-bone utilizzando la procedura guidata in Eclipse e specificato la sua attività principale. Non sono riuscito a trovare alcun getActionBar().setDisplayHomeAsUpEnabled(true) nel codice generato automaticamente, ma il pulsante su è presente all'avvio di questa attività e funziona come previsto. Qualcuno potrebbe far luce su questo?Perché il pulsante su è presente senza setDisplayHomeAsUpEnabled()?

public class FooActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_foo); 

      //more code...  
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
      //more code... 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      //more code... 
      return rootView; 
     } 
    } 

} 

risposta

13

Quando si specifica un parentActivityName nel vostro AndroidManifest, Acitivtywill check for that and automatically enable the "up" affordance if it's present.

+0

Grazie mille per la pronta risposta. Significa che il documento è sbagliato (ad esempio getActionBar(). SetDisplayHomeAsUpEnabled (true) è ridondante) o ci sono circostanze in cui tale chiamata è necessaria per mostrare il pulsante su? – Hong

+0

Non lo chiamerei "sbagliato", ma probabilmente potrebbe essere riformulato per essere un po 'più chiaro. Lo stato dice "Ciò consente al sistema di facilitare schemi di navigazione come Up ..." sull'aggiunta di un 'parentActivityName'. Ma nel tuo caso è ridondante chiamare 'ActionBar.setDisplayHomeAsUpEnabled'. – adneal

+0

Esiste una circostanza in cui setDisplayHomeAsUpEnabled è necessario? Lo sto chiedendo perché voglio essere sicuro che aggiungere un parentActivityName sia tutto ciò che devo fare per avere il pulsante "su" per migliaia di modelli diversi di dispositivi Android. Ho letto il documento più volte e mi dà l'impressione che l'aggiunta di parentActivityName sia "il primo passo" (citato dal documento), e il secondo passo è chiamare setDisplayHomeAsUpEnabled. Sembra che ci sia anche un terzo passaggio. Mi dispiace per la mia comprensione limitata del documento. – Hong

3

ho descritto tutte le possibili combinazioni di seguito e relative sentenze:

  1. Hai sia android:parentActivityName=".MyActivity e questo getActionBar().setDisplayHomeAsUpEnabled(true); - viene visualizzato il pulsante indietro e Funziona;
  2. Si ha solo questo android:parentActivityName=".MyActivity - il pulsante Indietro appare e funziona, come sopra;
  3. Hai solo questo getActionBar().setDisplayHomeAsUpEnabled(true);, - viene visualizzato il pulsante Indietro, ma facendo clic su di esso non si va da nessuna parte;
  4. È stato impostato il parametro su falso in questo getActionBar().setDisplayHomeAsUpEnabled(false);, anche se si dispone di questo android:parentActivityName=".MyActivity nel manifest, il pulsante Indietro non viene visualizzato.

Ecco come funziona il mio amico.