2013-07-26 10 views
6

Sono un novizio per Android e mi chiedevo se qualcuno potesse guidarmi su come riutilizzare la barra delle azioni in tutte le mie attività Android. Per quanto ho esplorato, ho scoperto che dobbiamo creare una classe BaseActivity ed estenderla nella nostra attività in cui vogliamo riutilizzarla, e inoltre dobbiamo creare un layout xml e includerlo nel nostro file xml di attività. Ho finito con la parte BaseActivity. Ora sono un po 'confuso nell'inquadrare la parte xml e includerla. So come unire e includere un layout, ma nel caso di Action Bar, quali passi necessari devono essere presi. Qualsiasi aiuto sarebbe apprezzato.Riutilizzare la barra delle azioni in tutte le attività dell'app

Questo è il mio BaseMenuActivity:

public class BaseMenuActivity extends Activity{ 

    ActionBar actionBar; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     actionBar = getActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
     actionBar.setDisplayShowCustomEnabled(true); 
     actionBar.setIcon(R.drawable.ic_social_share); 
     LayoutInflater inflator = (LayoutInflater) this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View v = inflator.inflate(R.layout.apptitle, null); 
     actionBar.setDisplayShowTitleEnabled(false); 
     actionBar.setCustomView(v); 
    } 
} 

parte Manifesto per la stessa:

<activity 
      android:name="com.example.travelplanner.MenuActivity" 
      android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" 
      android:uiOptions="splitActionBarWhenNarrow" 
      android:label="WeTrip" 
      android:theme="@style/MyTheme" > 

Style.xml parte:

<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 
    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:background">#F0F1F1</item> 
     <item name="android:backgroundSplit">#000000</item> 
    </style> 

MenuActivity.java

public class MenuActivity extends BaseMenuActivity implements OnItemClickListener{ 

    ActionBar actionBar; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_menu); 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu, menu); 
     SearchView searchView = (SearchView) menu.findItem(R.id.menu_action_search).getActionView(); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
     switch(item.getItemId()){ 
      case R.id.menu_action_search: 
      {} 
      case R.id.menu_action_locate: 
      {} 
      case R.id.menu_action_mail: 
      {} 
      case R.id.menu_action_call: 
      {} 
     } 
     return super.onOptionsItemSelected(item); 
    } 

} 
+0

quindi, se ho capito bene, vuoi solo avere la stessa barra di azione attraverso la tua app? – tyczj

+0

si..ma non so come ottenerlo correttamente. Perché so che devo creare una classe BaseActivity e devo estenderla, e inoltre devo creare un file xml e includerlo in ogni attività Voglio visualizzare la stessa barra di azione .. ma ho bisogno di una guida su di esso – divyang7

+0

puoi imposta il tema dell'applicazione nel tuo manifest in modo da non doverlo impostare per ogni singola attività nel tuo manifest. Dovrai comunque dargli il punto di vista in ogni attività. Se non vuoi farlo, ti suggerisco di guardare i frammenti di commutazione invece delle attività – tyczj

risposta

8

Bene Il codice sembra buono, ma se si desidera riutilizzare esattamente lo stesso ActionBar con le stesse icone e menu e generalmente la stessa funzionalità in ogni attività.

si potrebbe aggiungere il codice:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu, menu); 
     SearchView searchView = (SearchView) menu.findItem(R.id.menu_action_search).getActionView(); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
     switch(item.getItemId()){ 
      case R.id.menu_action_search: 
      {} 
      case R.id.menu_action_locate: 
      {} 
      case R.id.menu_action_mail: 
      {} 
      case R.id.menu_action_call: 
      {} 
     } 
     return super.onOptionsItemSelected(item); 
    } 

nella tua classe e il tuo BaseMenuActivity ActionBar sarà popolato lo stesso per tutte le attività che si estende da esso.

Aggiornamento:

Per creare un layout del menu è necessario creare un 'menu' cartella nella cartella res risorse/menu. quindi creare un file XML all'interno chiamato: some_title.xml

Un tipico esempio di un file di menu XML è come qui di seguito:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/menu_search" 
     android:actionViewClass="com.actionbarsherlock.widget.SearchView" 
     android:icon="@drawable/abs__ic_search" 
     android:showAsAction="ifRoom|withText|collapseActionView" 
     android:title="@string/menu_action_search"/> 
    <item 
     android:id="@+id/menu_sort" 
     android:icon="@drawable/content_sort_icon" 
     android:showAsAction="always" 
     android:title="@string/menu_action_sort"> 
    </item> 

</menu> 

e poi gonfiare quel file:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.some_title, menu); 
     SearchView searchView = (SearchView) menu.findItem(R.id.menu_action_search).getActionView(); 
     return true; 
    } 

Per ulteriori informazioni, questo tutorial è molto utile sull'utilizzo di ActionBar:

http://www.vogella.com/tutorials/AndroidActionBar/article.html

+0

Grazie..non è necessario creare e includere un diverso layout xml per la barra delle azioni ... Può essere fatto utilizzando solo la parte java .. – divyang7

+0

Sì, l'ho fatto ... e il suo funzionamento ... grazie .. – divyang7

+0

come posizionare la barra di azione trasparente per tutti attività ho uno schermo multiplo a schermo intero e integro anche animazione android-flip per l'animazione di arricciatura pagina per il quale ho bisogno di posizionare la barra delle azioni z-index è superiore come in cosa ios per favore aiuto per riferimento Notizie in Shorts- India News App – Harsha

Problemi correlati