2013-07-26 41 views
6

Tôi là người mới chơi Android và tôi đã tự hỏi liệu có ai đó có thể hướng dẫn tôi cách sử dụng lại thanh hành động trong tất cả các hoạt động Android của tôi hay không. Theo như tôi đã khám phá, tôi phát hiện ra rằng chúng ta phải tạo một lớp BaseActivity và mở rộng nó trong Activity của chúng ta nơi chúng ta muốn tái sử dụng nó, và chúng ta cũng phải tạo một bố cục xml và bao gồm nó trong tệp xml hoạt động của chúng ta. Tôi đã hoàn thành phần BaseActivity. Bây giờ tôi là loại bối rối trong khung phần xml và bao gồm nó. Tôi biết làm thế nào để hợp nhất và bao gồm một bố trí, Nhưng trong trường hợp của Action Bar, những bước cần thiết là để được thực hiện. Bất kỳ trợ giúp sẽ được đánh giá cao.Sử dụng lại thanh hành động trong tất cả các hoạt động của ứng dụng

Đây là BaseMenuActivity tôi:

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

phần Manifest cho cùng:

<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 phần:

<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

vì vậy nếu tôi hiểu chính xác bạn, bạn chỉ muốn có cùng một thanh tác vụ thông qua ứng dụng của bạn? – tyczj

+0

vâng .. nhưng tôi không biết làm thế nào để đạt được nó đúng cách. Bởi vì tôi biết tôi phải tạo một lớp BaseActivity và phải mở rộng nó, và tôi cũng phải tạo một tệp xml và bao gồm nó trong mọi hoạt động tôi muốn hiển thị cùng một thanh tác vụ .. nhưng tôi cần một số hướng dẫn về nó – divyang7

+0

bạn có thể chỉ cần đặt chủ đề của ứng dụng trong tệp kê khai của bạn để bạn không phải đặt nó cho từng hoạt động riêng lẻ trong tệp kê khai của mình. Tuy nhiên, bạn sẽ cần phải cung cấp cho nó cái nhìn trong mỗi hoạt động. Nếu bạn không muốn làm điều đó thì tôi khuyên bạn nên xem xét các đoạn chuyển đổi thay vì các hoạt động – tyczj

Trả lời

8

Vâng Mã của bạn có vẻ tốt, nhưng nếu bạn muốn sử dụng lại chính xác cùng một ActionBar với cùng biểu tượng và menu và thường có cùng chức năng trong mọi hoạt động.

Bạn có thể thêm mã:

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

trong lớp BaseMenuActivity của bạn và actionbar của bạn sẽ được áp dụng tương tự cho tất cả các hoạt động kéo dài từ nó.

Cập nhật:

Để tạo bố cục menu, bạn nên tạo thư mục 'menu' trong trình đơn/thư mục tài nguyên của bạn. Sau đó tạo một file xml bên trong gọi: some_title.xml

Một ví dụ điển hình của một tập tin đơn xml là như dưới đây:

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

và sau đó thổi phồng tập tin đó:

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

Để đọc thêm hướng dẫn này rất hữu ích khi sử dụng ActionBar:

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

+0

Thanks..Is no need to tạo và bao gồm bố cục xml khác cho thanh tác vụ ... Có thể thực hiện bằng cách chỉ sử dụng phần java .. – divyang7

+0

Có tôi đã thực hiện ... và hoạt động của nó..thanks .. – divyang7

+0

cách đặt thanh tác vụ trong suốt cho tất cả các hoạt động tôi có nhiều màn hình với chế độ toàn màn hình và cũng tích hợp hoạt ảnh android-flip cho hoạt ảnh curl trang cho rằng tôi cần phải đặt thanh tác vụ z-index là hàng đầu như trong ios, vui lòng giúp tham khảo Tin tức trong Shorts- India News App – Harsha

Các vấn đề liên quan