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时。。。但我认为公认的答案是实现这一目标的好方法。。