2014-04-02 12 views
10

Zgodnie z Google's document, potrzebny jest getActionBar().setDisplayHomeAsUpEnabled(true), aby wyświetlić przycisk w górę. Stworzyłem działanie bare-bone za pomocą kreatora w Eclipse i określiłem jego macierzystą aktywność. Nie mogłem znaleźć żadnego getActionBar().setDisplayHomeAsUpEnabled(true) w automatycznie generowanym kodzie, ale przycisk up jest obecny, gdy ta aktywność jest uruchomiona i działa zgodnie z oczekiwaniami. Czy ktokolwiek mógłby rzucić trochę światła na to?Dlaczego przycisk up jest obecny bez 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; 
     } 
    } 

} 

Odpowiedz

13

Po określeniu parentActivityName w twojej AndroidManifest, Acitivtywill check for that and automatically enable the "up" affordance if it's present.

+0

Wielkie dzięki za szybką odpowiedź. Czy to oznacza, że ​​dokument jest nieprawidłowy (tj. GetActionBar(). SetDisplayHomeAsUpEnabled (true) jest zbędny), czy są okoliczności, w których takie wywołanie jest potrzebne, aby wyświetlić przycisk "up"? – Hong

+0

Nie nazwałbym tego "niewłaściwym", ale prawdopodobnie mógłby zostać przeformułowany, by był nieco bardziej przejrzysty. Zawiera komunikat "Robiąc to umożliwia systemowi ułatwianie wzorców nawigacyjnych, takich jak Up ..." o dodawaniu 'parentActivityName'. Ale w twoim przypadku zbędne jest wywoływanie 'ActionBar.setDisplayHomeAsUpEnabled'. – adneal

+0

Czy istnieje sytuacja, w której wymagana jest funkcja setDisplayHomeAsUpEnabled? Pytam o to, ponieważ chcę się upewnić, że dodanie parametru ParentActivityName jest wszystkim, co muszę zrobić, aby mieć przycisk "up" dla tysięcy różnych modeli urządzeń z Androidem. Przeczytałem ten dokument kilka razy i daje mi to wrażenie, że dodanie parentActivityName jest "pierwszym krokiem" (cytowanym z dokumentu), a drugim krokiem jest wywołanie setDisplayHomeAsUpEnabled. Wygląda na to, że jest nawet trzeci krok. Przykro mi z powodu mojego ograniczonego rozumienia tego dokumentu. – Hong

3

opisałem wszystkie możliwe kombinacje poniżej i ich rezultaty:

  1. Masz zarówno android:parentActivityName=".MyActivity i to getActionBar().setDisplayHomeAsUpEnabled(true); - pojawia się przycisk z powrotem i to działa;
  2. Masz tylko ten android:parentActivityName=".MyActivity - pojawia się przycisk powrotu i działa tak samo, jak powyżej;
  3. Masz tylko ten getActionBar().setDisplayHomeAsUpEnabled(true);, - pojawi się przycisk "Wstecz", ale kliknięcie go nie nigdzie się nie udaje;
  4. Ustawiono parametr na wartość false w tym getActionBar().setDisplayHomeAsUpEnabled(false);, mimo że w manifeście jest to android:parentActivityName=".MyActivity, przycisk Wstecz nie pojawia się.

Tak to działa, mój przyjaciel.

Powiązane problemy