将工具栏设置为片段中的操作栏

Lau*_*yts 42 java android toolbar fragment android-actionbar

我想将工具栏设置为操作栏,但由于工具栏是一个布局,因此必须在您的布局中.现在我的布局在我的片段中.

我在我的布局中添加了工具栏,我在我的片段中调用它:

//Toolbar
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
Run Code Online (Sandbox Code Playgroud)

它的作用是因为我可以设置标题等等,但现在我希望它作为动作栏做出反应,因为我想要实际拥有它.setDisplayHomeAsUpEnabled(真)

为此,我必须将工具栏更改为操作栏:

setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

这在我的片段中不起作用......

任何人都可以帮助我让我的工具栏作为片段中的操作栏工作.

Pra*_*ani 55

现在ActionBarActivity已弃用,因此您需要将活动从第一个投射getActivity()AppCompatActivity第一个.这是一个例子:

((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle();
Run Code Online (Sandbox Code Playgroud)

你必须抛出它的原因是因为getActivity()返回a FragmentActivity而你需要一个AppCompatActivity

  • 出于某种原因,这不是在片段中初始化工具栏 (2认同)

not*_*one 26

尝试:

 ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

  • 一款活动应用程序怎么样? (3认同)

dom*_*der 17

ActionBar是一个Activity属性.如果要将给定片段中的工具栏设置为拥有Activity的ActionBar,则获取拥有fragment(Fragment.getActivity())的Activity 并设置其ActionBar属性.

然后,在将工具栏设置为ActionBar以获取后退/上移按钮后,juse将使用您在ActionBar中提到的相同setDisplayHomeAsUpEnabled方法.

如果您的应用在该活动中有多个片段,您显然必须仔细管理.


Rav*_*avi 7

使用

((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title");
Run Code Online (Sandbox Code Playgroud)

  • 你得到之前需要设置.(那押韵) (7认同)