App

2013-07-26 30 views
6

'un tüm aktivitelerinde Action Bar'ı yeniden kullanıyorum Android için yeni bir kullanıcıyım ve birisinin tüm android aktivitelerimde aksiyon çubuğunu yeniden kullanma konusunda bana rehberlik edip edemeyeceğini merak ediyorum. Keşfettiğim kadarıyla, bir BaseActivity sınıfı oluşturmamız gerektiğini ve onu yeniden kullanmak istediğimiz Aktivitemizde genişletmemizi ve xml düzenini yapıp onu xml dosyanızın içine eklememiz gerektiğini öğrendim. BaseActivity bölümüyle bitirdim. Şimdi xml parçasını çerçevelemek ve buna dahil olmak üzere kafam karıştı. Bir mizanpajın nasıl birleştirileceğini ve dahil edileceğini biliyorum, ancak Eylem Çubuğu söz konusu olduğunda gerekli adımlar atılacak. Herhangi bir yardım takdir edilecektir. Aynı içinApp

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 kısmı::

<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 kısmı:

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

} 

Bu

benim BaseMenuActivity olduğunu
+0

bu yüzden doğru bir şekilde anladığımda, uygulamanızla aynı eylem çubuğuna sahip olmak istersiniz? – tyczj

+0

evet .. ama doğru şekilde nasıl başaracağımı bilmiyorum. Çünkü bir BaseActivity sınıfı yapmam gerektiğini ve bunu genişletmek zorunda olduğumu bildiğimden, aynı zamanda bir xml dosyası oluşturup aynı eylem çubuğunu görüntülemek istediğim her etkinliğe dahil etmeliyim .. ama bu konuda biraz bilgiye ihtiyacım var – divyang7

+0

Sadece uygulama temasını kendi manifest'inize yerleştirin, böylece manifestinizdeki her bireysel etkinlik için bunu ayarlamanız gerekmez. Bununla birlikte, her bir aktivitede görüşü vermeniz gerekecektir. Bunu yapmak istemiyorsanız, o zaman aktiviteler yerine fragmanları değiştirmeyi öneririm – tyczj

cevap

8

Peki Sizin kodunuz iyi görünüyor, ancak aynı simgeler ve menülerle aynı ActionBar'ı ve genel olarak her etkinlikteki genel işlevlerle yeniden kullanmak isterseniz. senin BaseMenuActivity sınıfında

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

ve İşlem Çubuğu ondan uzanan her etkinlik için aynı doldurulur:

Sen kod ekleyebilirsiniz.

Güncelleme:

bir menü düzenini size kaynaklar klasör res/menüsünde bir klasör 'menüsünü' oluşturmalıdır yaratmak. Sonra içeride adlı bir xml dosyası oluşturmak: some_title.xml

bir menü xml dosyasının tipik bir örneği aşağıda gibidir:

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

ve daha sonra bu dosyayı şişirmek:

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

Daha fazla okuma için bu eğitici, ActionBar kullanımıyla çok iyi:

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

+0

Teşekkürler ... Oluşturun ve eylem çubuğu için farklı bir xml düzenini dahil edin ... Sadece java parçasını kullanarak yapabilirsiniz .. – divyang7

+0

Evet bunu yaptım ... ve onun çalışması .. teşekkürler .. – divyang7

+0

herkes için şeffaf actionbar nasıl yerleştirilir aktiviteler tam ekran ile birden fazla ekran var ve ben de actionbar z-index gibi ibaresi için gereken sayfa curl animasyon için android-flip animasyonu entegre etmek ios şey gibi üstte referans için yardım Lütfen yardım için yardim et News - Haberler Haberler – Harsha