【问题标题】:Adding toolbar to a FragmentActivity将工具栏添加到 FragmentActivity
【发布时间】:2015-05-10 06:05:45
【问题描述】:

我在一个类中扩展FragmentActivity,作为我的其他活动扩展的基础活动。 我的问题是,当我从基本活动扩展其他活动时,我失去了工具栏功能。如何将此添加到我的基本活动中,以便我的活动可以继承工具栏? 有什么指点吗?

【问题讨论】:

  • 你的意思是 actionBar 吗?
  • 没有。我知道如何添加操作栏。我的意思是工具栏。

标签: android android-fragmentactivity


【解决方案1】:

您应该从 AppCompatActivity 扩展您的 Activity,因为这包括对 Fragments 和工具栏的支持

public class MainActivity extends AppCompatActivity { ...

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    FragmentTransaction ft = getSupportFragmentManager.beginTransaction();
    ....
    ....

【讨论】:

    【解决方案2】:

    如果片段应该有ToolBar 的自定义视图,您可以分别为每个片段实现ToolBar

    ToolBar 添加到fragment_layout 中:

    <android.support.v7.widget.Toolbar
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimaryDark"/>
    

    在片段中找到它:

    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment, container, false);
            Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
    
            //set toolbar appearance
            toolbar.setBackground(R.color.material_blue_grey_800);
    
            //for crate home button
            ActionBarActivity activity = (ActionBarActivity) getActivity();
            activity.setSupportActionBar(toolbar);
            activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    

    菜单监听器可以通过两种方式创建:

    1.在你的片段中覆盖onOptionsItemSelected

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case android.R.id.home:
                getActivity().onBackPressed();
        }
        return super.onOptionsItemSelected(item);
    }
    

    2.在onCreateView()中创建工具栏时设置监听器:

    toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    return false;
                }
    });
    

    【讨论】:

    • 你的意思是我应该为我的基本活动扩展 Fragment 而不是扩展 FragmentActivity??
    • 你可以试试这个
    • 它不起作用,因为片段需要附加一个活动才能工作。 FragmentActivity 使用 pre-honeycomb 的地方。上面的蜂窝需要一个活动
    • 更好的是,创建一个工具栏布局文件夹,并使用 标签将其包含在您使用它的任何地方,以最大限度地减少代码使用。这假设您在每个片段/活动中都有相同的工具栏
    • schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height=" wrap_content" android:background="?attr/colorPrimaryDark"/>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    相关资源
    最近更新 更多