具有单独工具栏的片段和活动不起作用,因为始终显示活动工具栏

时间:2017-09-13 05:02:51

标签: android android-activity fragment android-toolbar android-appcompat

我想要实现的是当我的Activity还有一个未显示在片段内的栏时,将一个工具栏添加到我的片段UI。基本上,我的Activity和Fragment如何拥有自己的工具栏?

这是我活动中的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mToolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(mToolbar);
}

这是我片段中的代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.fragment_layout, container, false);
    mToolbar = (Toolbar) mView.findViewById(R.id.fragment_toolbar);
    ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
    return mView;
}

我得到的是,当我在片段中创建工具栏时,工具栏是活动的工具栏。我想要做的是我希望片段与它的父Activity有单独的工具栏。

以下是我能想到的一些绝对不理想的事情:

  1. 使片段成为活动。
  2. 仿佛我创建了一个工具栏,但只是将片段工具栏定义为我自己拼凑的UI元素。
  3. 以某种方式编辑父Activity的工具栏以使其特定于片段,然后以某种方式重绘活动工具栏?这看起来很奇怪,我甚至不确定它是否可能。

1 个答案:

答案 0 :(得分:0)

在一个活动中有两个工具栏是不可取的,因为它看起来非常糟糕。

((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar); 您将使用您在片段的布局文件中定义的工具栏替换活动工具栏。

我建议您在片段在屏幕上可见时使用片段特定的操作,并通过访问工具栏的内容来改变它的行为

Toolbar mToolbar = ((AppCompatActivity) getActivity()).getSupportActionBar();

现在使用mToolbar更改操作