2013-07-02 13 views
24

Chcę dodać przycisk do paska akcji z prawej strony przykład jak w tym zrzucie ekranu:Jak dodać przycisk w ActionBar (Android)?

a screenshot of an actionbar with no buttons. the title is 'Example'

dostaję actionBar w metodzie onCreate jak:

ActionBar actionBar = getActionBar(); 
actionBar.setDisplayHomeAsUpEnabled(true); 

i przycisk Wstecz (metoda onOptionsItemSelected) jak poniżej:

public boolean onOptionsItemSelected(MenuItem item){ 
    Intent myIntent = new Intent(getApplicationContext(),MainActivity.class); 
    startActivityForResult(myIntent, 0); 
    return true; 
} 

Jak mogę dodać przycisk?

Odpowiedz

72

trzeba utworzyć wpis wewnątrz res/menu, ręcznym onCreateOptionsMenu i nadmuchać to

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.yourentry, menu); 
    return true; 
} 

wpis do menu mogą być:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/action_cart" 
     android:icon="@drawable/cart" 
     android:orderInCategory="100" 
     android:showAsAction="always"/> 
</menu> 
+0

Ok.That works.But dont zrozumieć wykorzystanie orderInCategory i jego wartość jako 100. – Ponting

+0

To jest liczbą całkowitą, która reprezentuje kolejność „znaczenie” z pozycja w grupie. Możesz to zmienić. Dopóki masz jedno lub dwa elementy w menu, nie ma to znaczenia. możesz o tym przeczytać [tutaj] (http://developer.android.com/guide/topics/resources/menu-resource.html) – Blackbelt

+0

Dziękuję. Teraz inne pytanie jest takie, że dodaję to menu w innym działaniu, ale pokazuję inne przycisk zamiast tego. Jak mogę to zrobić? – Ponting

14

Działalność zapełnia ActionBar w swojej metodzie onCreateOptionsMenu().

Zamiast setcustomview(), po prostu zastąpić onCreateOptionsMenu takiego:

@Override  
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mainmenu, menu); 
    return true; 
} 

Jeśli an działania w ActionBar jest wybrana metoda onOptionsItemSelected() nazywa. Odbiera wybraną akcję jako parametr. Na podstawie tych informacji Twój kod może zdecydować, co zrobić, na przykład:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.menuitem1: 
     Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT).show(); 
     break; 
    case R.id.menuitem2: 
     Toast.makeText(this, "Menu item 2 selected", Toast.LENGTH_SHORT).show(); 
     break; 
    } 
    return true; 
} 
0

Dzięki @Blackbelt! Nowa metoda podpis do pompowania menu to:

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.my_meny, menu); 
}