Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在片段中获取工具栏_Android_Android Fragments_Android Toolbar - Fatal编程技术网

Android 在片段中获取工具栏

Android 在片段中获取工具栏,android,android-fragments,android-toolbar,Android,Android Fragments,Android Toolbar,我在我的主要活动中设置了一个工具栏,当我进入一个片段时,我想在其上添加一个滑块。如果我有权访问工具栏对象,我只需执行以下操作: Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); Spinner mNavigationSpinner = new SpinnerT

我在我的主要活动中设置了一个工具栏,当我进入一个片段时,我想在其上添加一个滑块。如果我有权访问工具栏对象,我只需执行以下操作:

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()
方法。所以我的问题是,如果工具栏本身是在活动中创建的,那么如何在片段中向工具栏添加视图

我不确定这是否是进行此操作的最佳视图,但我不认为可以在布局中定义微调器,因为我的大多数片段都不使用它,它们只是为工具栏设置了一个标题。但同时,如果我能在主活动中定义一次工具栏,而不是对每个片段都重复它,那就太好了。

您可以使用

Toolbar refTool = ((NameOfClass)getActivity()).toolbar;

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

请参见此处阅读的工具栏主用途,以便工具栏和actionbar中没有任何差异。所以,如果您想在工具栏设置为Actionbar之前将视图添加到工具栏,那么
toolbar.addView(您的视图)可以,但在应用到
设置操作栏(工具栏)
设置支持操作栏(工具栏)
后,可以将视图设置为操作栏

例如((ActionBarActivity)getActivity()).getSupportActionBar().setView(您的视图)


就是这样…

从Ellitz answer中实现相同功能的另一种方法,在片段内直接访问工具栏(或活动内的任何其他视图):

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

我想为
Budius
所说的内容添加一个角色

Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);
这是正确的做法。因为

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

返回一个视图。这会给您带来错误,您应该将其转换到
工具栏

如果没有内置的方法,我想这将是最好的解决方案。谢谢。创建片段对象时,可以将工具栏对象传递给片段构造函数。这就是我所做的。@Moinkhan怎么做的?我应该向fragment传递什么对象?@Talha当您从fragment fm=YourFragment.getInstance(yourToolbarinstance)之类的活动创建fragment时。。。但我认为公认的答案是实现这一目标的好方法。。