获取工具栏的碎片

时间:2015-07-13 10:04:19

标签: android android-fragments android-toolbar

我在主要活动中设置了一个工具栏,当我进入片段时,我想在其上添加一个滑块。如果我有权访问工具栏对象,我只会这样做:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);


Spinner mNavigationSpinner = new SpinnerTrigger(getSupportActionBar().getThemedContext());
toolbar.addView(mNavigationSpinner);

但如果我使用

((ActionBarActivity) getActivity()).getSupportActionBar()

我没有任何addView()方法。所以我的问题是,如果工具栏本身是在活动中创建的,如何在片段中向工具栏添加视图。

我不确定这是否是最好的观点,但我不认为我可以在布局中定义Spinner,因为我的大多数片段都没有使用它,他们只需设置工具栏的标题。但与此同时,如果我可以在主要活动中定义一次工具栏而不是为每个片段重做它,那将会很棒。

4 个答案:

答案 0 :(得分:24)

从Ellitz回答的另一种实现同样的方法,在片段内部直接访问工具栏(或活动内的任何其他视图):

dlg->PostMessage(WM_CLOSE);

答案 1 :(得分:5)

你可以使用

获得它
Toolbar refTool = ((NameOfClass)getActivity()).toolbar;

或者,创建MainActivity的实例,然后覆盖onAttach(Activity activity)并将MainActivity的实例对象分配给onAttach()中的活动

答案 2 :(得分:0)

请参阅工具栏主要目的是https://developer.android.com/reference/android/widget/Toolbar.html在此处阅读,因此工具栏和操作栏中没有任何差异。因此,如果您想在工具栏设置为操作栏之前添加视图,那么toolbar.addView(your view);就可以了,但在应用setactionbar(toolbar)setSupportActionbar(toolbar)后,您可以将视图设置为操作栏。

离。 ((ActionBarActivity)getActivity())。getSupportActionBar()。setView(你的观点)

多数民众赞成......

答案 3 :(得分:0)

我想为Budius所说的内容添加一个演员。

Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);

是正确的做法。因为

getActivity().findViewById(R.id.toolbar);

返回一个视图。这会给你错误,你应该把它投到Toolbar