2013-07-26 5 views
6

Ich bin ein Neuling für Android und ich fragte mich, ob jemand mich über die Verwendung der Aktionsleiste in allen meinen Android-Aktivitäten führen könnte. Soweit ich es untersucht habe, habe ich herausgefunden, dass wir eine BaseActivity-Klasse erstellen und sie in unserer Aktivität erweitern müssen, wo wir sie wiederverwenden wollen. Außerdem müssen wir ein XML-Layout erstellen und es in unsere Aktivitäts-XML-Datei aufnehmen. Ich bin mit dem BaseActivity-Teil fertig. Jetzt bin ich irgendwie verwirrt, wenn ich den XML-Teil umrahme und ihn einfüge. Ich weiß, wie man ein Layout zusammenfügt und einfügt, aber im Falle einer Aktionsleiste, welche notwendigen Schritte unternommen werden müssen. Jede Hilfe wäre willkommen.Wiederverwendung der Aktionsleiste in allen Aktivitäten der App

Das ist mein 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); 
    } 
} 

Manifest Teil für das gleiche:

<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 Teil:

<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

also, wenn ich Sie richtig verstehe, wollen Sie nur die gleiche actionbar durch Ihre App? – tyczj

+0

ja..aber ich weiß nicht, wie man es richtig erreicht. Weil ich weiß, dass ich eine BaseActivity-Klasse machen muss und sie erweitern muss, und auch ich muss eine XML-Datei erstellen und sie in jeder Aktivität einschließen, die ich die gleiche actionbar anzeigen möchte .. aber ich brauche eine Anleitung darauf – divyang7

+0

können Sie Legen Sie einfach das Thema der Anwendung in Ihrem Manifest fest, und Sie müssen es nicht für jede einzelne Aktivität in Ihrem Manifest festlegen. Sie müssen es jedoch in jeder Aktivität sehen. Wenn Sie das nicht tun wollen, schlage ich vor, anstelle von Aktivitäten die Fragmente zu wechseln. – tyczj

Antwort

8

Nun Ihr Code sieht gut aus, aber wenn Sie dieselbe ActionBar mit den gleichen Symbolen und Menüs und in der Regel die gleiche Funktionalität in jeder Aktivität wiederverwenden möchten.

Sie könnten den Code hinzufügen:

@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); 
    } 

in Ihrer BaseMenuActivity Klasse und Ihre ActionBar wird das gleiche für jede Aktivität aufgefüllt werden, die von ihm erstreckt.

Update:

Um ein Menü-Layout zu erstellen, sollten Sie einen Ordner 'Menü' erstellen in Ihrer Ressourcen Ordner res/Menü. dann eine XML-Datei namens erstellen: some_title.xml

Ein typisches Beispiel für eine Datei-Menü XML ist wie folgt:

<?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> 

und diese Datei dann aufblasen:

@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; 
    } 

Für einige mehr lesen dieses Tutorial ist sehr sehr gut auf die Verwendung von ActionBar:

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

+0

Thanks..Ist es keine Notwendigkeit zu nehmen erstellen und ein anderes XML-Layout für die Aktionsleiste hinzufügen ... Kann es nur mit dem Java-Teil getan werden .. – divyang7

+0

Ja, ich habe es getan ... und seine Arbeit..danke .. – divyang7

+0

wie transparente Actionbar für alle platzieren aktivitäten ich habe mehrere bildschirme mit fullscreen und auch android-flip-animation für seitenwirbel animation für das ich brauche actionbar z-index ist top wie in ios dinge bitte hilfe für referenz Nachrichten in Shorts-India News App – Harsha

Verwandte Themen