在 Fragment 中获取工具栏
Getting Toolbar in Fragment
我在主 activity 中设置了一个工具栏,当我进入一个片段时,我想在上面添加一个滑块。如果我可以访问工具栏 object,我会简单地做:
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()
方法。所以我的问题是,如果工具栏本身是在 Activity.
中创建的,我如何在片段中向工具栏添加视图
我不确定这是否是解决此问题的最佳视图,但我认为我无法在布局中定义 Spinner,因为我的大部分片段都不使用它,它们只需为工具栏设置一个标题。但与此同时,如果我可以在主 activity 中定义一次工具栏而不是为每个片段都重做,那就太好了。
您可以使用
获取它
Toolbar refTool = ((NameOfClass)getActivity()).toolbar;
或者,创建您的 MainActivity 实例,然后覆盖 onAttach(Activity activity)
并将您的 MainActivity 实例对象分配给 onAttach()
中的 activity
查看工具栏的主要目的是 https://developer.android.com/reference/android/widget/Toolbar.html 阅读此处,因此工具栏和操作栏没有任何区别。所以如果你想在设置为 Actionbar 之前将视图添加到工具栏,那么 toolbar.addView(your view);
就可以了,但是在应用到 setactionbar(toolbar)
或 setSupportActionbar(toolbar)
之后你可以将视图设置为 actionbar.
例如。 ((ActionBarActivity) getActivity()).getSupportActionBar().setView(您的视图)
就是这样...
Ellitz answer 实现相同目的的另一种方法,在片段内直接访问工具栏(或 activity 内的任何其他视图):
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
我想对 Budius
所说的进行补充。
Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);
是正确的做法。因为
getActivity().findViewById(R.id.toolbar);
returns一个视图。这会给您带来错误,您应该将其转换为 Toolbar
.
我在主 activity 中设置了一个工具栏,当我进入一个片段时,我想在上面添加一个滑块。如果我可以访问工具栏 object,我会简单地做:
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()
方法。所以我的问题是,如果工具栏本身是在 Activity.
我不确定这是否是解决此问题的最佳视图,但我认为我无法在布局中定义 Spinner,因为我的大部分片段都不使用它,它们只需为工具栏设置一个标题。但与此同时,如果我可以在主 activity 中定义一次工具栏而不是为每个片段都重做,那就太好了。
您可以使用
获取它Toolbar refTool = ((NameOfClass)getActivity()).toolbar;
或者,创建您的 MainActivity 实例,然后覆盖 onAttach(Activity activity)
并将您的 MainActivity 实例对象分配给 onAttach()
查看工具栏的主要目的是 https://developer.android.com/reference/android/widget/Toolbar.html 阅读此处,因此工具栏和操作栏没有任何区别。所以如果你想在设置为 Actionbar 之前将视图添加到工具栏,那么 toolbar.addView(your view);
就可以了,但是在应用到 setactionbar(toolbar)
或 setSupportActionbar(toolbar)
之后你可以将视图设置为 actionbar.
例如。 ((ActionBarActivity) getActivity()).getSupportActionBar().setView(您的视图)
就是这样...
Ellitz answer 实现相同目的的另一种方法,在片段内直接访问工具栏(或 activity 内的任何其他视图):
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
我想对 Budius
所说的进行补充。
Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);
是正确的做法。因为
getActivity().findViewById(R.id.toolbar);
returns一个视图。这会给您带来错误,您应该将其转换为 Toolbar
.