带片段的ActionBar(支持)(支持)

Ani*_*udh 17 android fragment android-actionbar

我需要在我的一个针对姜饼的Android应用程序中使用动作栏和片段的组合.所以我使用了v7支持库中的操作栏和v4支持库中的片段,并使用FragmentActivity扩展了我的类.

当我输入线路时出错

actionbar = getSupportActionBar();
Run Code Online (Sandbox Code Playgroud)

该错误表明,对于myFragmentClass(我的类名)类型,未定义getSupportActionBar().没有支持库,代码可以完美运行.我的问题有解决方案吗?

谢谢!

bGo*_*rle 41

在OnAttach()方法中编写此代码:

actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
Run Code Online (Sandbox Code Playgroud)

不推荐使用ActionBarActivity.使用

actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();


小智 19

您必须扩展ActionBarActivity而不是FragmentActivity以使Actionbar具有片段.

如果您正在使用v7 appcompat库,那么您的活动应该扩展ActionBarActivity,它是FragmentActivity的子类(有关更多信息,请参阅添加操作栏).

您可以在下面给出的页面上找到更多信息.上面的行取自下面的页面(最后一段). http://developer.android.com/training/basics/fragments/creating.html

编辑 - 这不是一个错误.它只是缺乏知识.有时基本不清楚.我目前正在学习,这也是来自Android网站,这就是我给你答案的方式.


Tin*_*she 8

我也尝试过使用:

actionbar = getActivity().getSupportActionBar();
Run Code Online (Sandbox Code Playgroud)

直到我这样做才行不通:

ActionBar actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar();
Run Code Online (Sandbox Code Playgroud)

所以当我投射到我的MainActivity时它会起作用.


Yul*_*mok 8

对于android.support.v7

ActionBar actionBar =  ((AppCompatActivity) getActivity()).getSupportActionBar();

//than next for example 
actionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)