重用操作栏的应用程序的所有活动 [英] Reuse the Action Bar in all the activities of app

查看:130
本文介绍了重用操作栏的应用程序的所有活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个新手,Android和我在想,如果有人能指导我如何重用操作栏在我所有的机器人活动。据我已经探索了,我发现,我们必须做出BaseActivity类,并在我们的活动扩展它,我们想重新使用它,我们也必须做出一个XML布局,并将其纳入我们的活动的XML文件。我已经完成了BaseActivity一部分。现在我有点儿迷糊中制定的XML部分,包括它。我知道如何合并,包括布局,但是,如果操作栏的,有什么必要的步骤都是要考虑。任何帮助将是AP preciated。

这是我BaseMenuActivity:

 公共类BaseMenuActivity延伸活动{

    动作条动作条;
    @覆盖
    保护无效的onCreate(包savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
        动作条= getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(真正的);
        actionBar.setDisplayShowCustomEnabled(真正的);
        actionBar.setIcon(R.drawable.ic_social_share);
        LayoutInflater充气=(LayoutInflater)本
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        视图V = inflator.inflate(R.layout.apptitle,NULL);
        actionBar.setDisplayShowTitleEnabled(假);
        actionBar.setCustomView(五);
    }
}
 

清单一部分是相同的:

 <活动
            机器人:名称=com.example.travelplanner.MenuActivity
            机器人:screenOrientation =画像机器人:configChanges =方向| keyboardHidden
            机器人:uiOptions =splitActionBarWhenNarrow
            机器人:标签=WeTrip
            机器人:主题=@风格/ MyTheme的>
 

Style.xml部分:

 <样式名称=MyTheme的父=@安卓风格/ Theme.Holo.Light>
        <项目名称=机器人:actionBarStyle> @风格/ MyActionBar< /项目>
    < /风格>
    <样式名称=MyActionBar父=@安卓风格/ Widget.Holo.Light.ActionBar>
        <项目名称=机器人:背景>#F0F1F1< /项目>
        <项目名称=机器人:backgroundSplit>#000000< /项目>
    < /风格>
 

MenuActivity.java

 公共类MenuActivity扩展BaseMenuActivity实现OnItemClickListener {

    动作条动作条;
    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        //requestWindowFeature(Window.FEATURE_NO_TITLE);
        的setContentView(R.layout.activity_menu);

    @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        //充气菜单;这增加了项目操作栏,如果它是present。
        。getMenuInflater()膨胀(R.menu.menu,菜单);
        搜索查看搜索查看=(搜索查看)menu.findItem(R.id.menu_action_search).getActionView();
        返回true;
    }

    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        // TODO自动生成方法存根
        开关(item.getItemId()){
            案例R.id.menu_action_search:
            {}
            案例R.id.menu_action_locate:
            {}
            案例R.id.menu_action_mail:
            {}
            案例R.id.menu_action_call:
            {}
        }
        返回super.onOptionsItemSelected(项目);
    }

}
 

解决方案

嗯,你的code看起来不错,但如果你想重新使用完全相同的动作条,在每一个活动相同的图标和菜单,一般相同的功能

您可以添加code:

  @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        //充气菜单;这增加了项目操作栏,如果它是present。
        。getMenuInflater()膨胀(R.menu.menu,菜单);
        搜索查看搜索查看=(搜索查看)menu.findItem(R.id.menu_action_search).getActionView();
        返回true;
    }

    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        // TODO自动生成方法存根
        开关(item.getItemId()){
            案例R.id.menu_action_search:
            {}
            案例R.id.menu_action_locate:
            {}
            案例R.id.menu_action_mail:
            {}
            案例R.id.menu_action_call:
            {}
        }
        返回super.onOptionsItemSelected(项目);
    }
 

在你的BaseMenuActivity类,你的动作条将被填充相同的每个从它扩展了活动。

更新:

要创建的菜单布局,你应该创建一个文件夹菜单中的在你的资源文件夹RES /菜单。 然后创建内部调用XML文件: some_title.xml

菜单xml文件的一个典型例子是象下面这样:

 < XML版本=1.0编码=UTF-8&GT?;
<菜单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>

    <项目
        机器人:ID =@ + ID / menu_search
        机器人:actionViewClass =com.actionbarsherlock.widget.SearchView
        机器人:图标=@可绘制/ abs__ic_search
        机器人:showAsAction =ifRoom | withText | collapseActionView
        机器人:标题=@字符串/ menu_action_search/>
    <项目
        机器人:ID =@ + ID / menu_sort
        机器人:图标=@可绘制/ content_sort_icon
        机器人:showAsAction =总是
        机器人:标题=@字符串/ menu_action_sort>
    < /项目>

< /菜单>
 

,然后抬高该文件:

  @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        //充气菜单;这增加了项目操作栏,如果它是present。
        。getMenuInflater()膨胀(R.menu.some_title,菜单);
        搜索查看搜索查看=(搜索查看)menu.findItem(R.id.menu_action_search).getActionView();
        返回true;
    }
 

有关更多阅读本教程非常使用动作条很好的:

<一个href="http://www.vogella.com/tutorials/AndroidActionBar/article.html">http://www.vogella.com/tutorials/AndroidActionBar/article.html

I am a newbie to android and I was wondering if someone could guide me about how to reuse the action bar in all of my android activities. As far as I have explored, I found out that we have to make a BaseActivity class and extend it in our Activity where we want to reuse it, and also we have to make a xml layout and include it in our activity xml file. I have finished with the BaseActivity part. Now I am sort of confused in framing the xml part and including it. I know how to merge and include a layout, But in case of Action Bar, what necessary steps are to be taken. Any help would be appreciated.

This is my 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 part for the same:

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

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

}

解决方案

Well Your code looks good, but if you want to reuse exactly the same ActionBar with the same icons and menus and generally the same functionality in every activity.

You could add the code:

    @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 your BaseMenuActivity class and your actionbar will be populated the same for every activity that extends from it.

Update:

To create a menu layout you should create a folder 'menu' in your resources folder res/menu. Then create a xml file inside called : some_title.xml

A typical example of a menu xml file is like below:

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

and then inflate that 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;
    }

For some more reading this tutorial is very very good on using ActionBar:

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

这篇关于重用操作栏的应用程序的所有活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆