我在主要活动中设置了一个工具栏,当我进入片段时,我想在其上添加一个滑块。如果我有权访问工具栏对象,我只会这样做:
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,因为我的大多数片段都没有使用它,他们只需设置工具栏的标题。但与此同时,如果我可以在主要活动中定义一次工具栏而不是为每个片段重做它,那将会很棒。
答案 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
。