我想将工具栏设置为操作栏,但由于工具栏是一个布局,因此必须在您的布局中。现在我的布局在我的片段中。
我在布局中添加了工具栏,我在片段中调用它:
//Toolbar
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
它的作用是因为我可以设置标题等等,但现在我希望它作为动作栏做出反应,因为我想实际拥有它。 setDisplayHomeAsUpEnabled(真)
要做到这一点,我必须将工具栏更改为操作栏:
setSupportActionBar(toolbar);
这在我的片段中不起作用......
任何人都可以帮助我让我的工具栏作为片段中的操作栏工作。
答案 0 :(得分:48)
现在不推荐使用ActionBarActivity
您需要先将活动从getActivity()
投射到AppCompatActivity
。这是一个例子:
((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle();
您必须投放它的原因是因为getActivity()
返回FragmentActivity
而您需要AppCompatActivity
答案 1 :(得分:25)
尝试:
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
答案 2 :(得分:16)
ActionBar是一个Activity属性。如果要将给定片段中的工具栏设置为拥有Activity的ActionBar,则获取拥有该片段(Fragment.getActivity()
)的Activity并设置其ActionBar属性。
然后,在将工具栏设置为ActionBar以获取后退/上移按钮后,juse使用您在ActionBar中提到的相同setDisplayHomeAsUpEnabled方法。
如果您的应用在该活动中有多个片段,您显然必须谨慎管理。
答案 3 :(得分:7)
使用
((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title");
答案 4 :(得分:0)
如果您使用Kotlin,请尝试以下操作:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, state: Bundle?): View? {
(activity as AppCompatActivity).setSupportActionBar(your_toolbar)
setHasOptionsMenu(true)
return inflater.inflate(R.layout.your_layout, container, false)
}
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
inflater?.inflate(R.menu.your_menu, menu)
}
答案 5 :(得分:0)
让我们说持有该片段的Activity是MainActivity。
做
MainActivity main = (MainActivity)getActivity();
//You can access all public variable and methods of MainActivity.
//simply call
main.setSupportActionBar(toolbar)
main.getSupportActionBar.setTitle("title");