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

时间:2013-09-27 13:48:56

标签: android android-actionbar fragment

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

当我输入行

时出错
actionbar = getSupportActionBar();

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

谢谢!

7 个答案:

答案 0 :(得分:41)

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

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

不推荐使用ActionBarActivity。使用

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

答案 1 :(得分:19)

您必须扩展ActionBarActivity而不是FragmentActivity以使Actionbar包含片段。

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

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

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

答案 2 :(得分:8)

我也尝试过使用:

actionbar = getActivity().getSupportActionBar();

直到我这样做才开始工作:

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

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

答案 3 :(得分:7)

android.support.v7

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

//than next for example 
actionBar.setDisplayHomeAsUpEnabled(true);

答案 4 :(得分:1)

要在Fragment中调用Action Bar,请使用:

actionbar = getActivity().getSupportActionBar();

片段没有动作栏但是没有动作。这就是你必须这样称呼它的原因。

答案 5 :(得分:0)

我通过扩展ActionBarActivity并在AndroidManifest.xml中进行了一些更改来尝试它 如

 <activity android:name="yourActionbarActivity" 

机器人:主题= “@风格/ Theme.AppCompat.Light” &GT;

它适用于我

答案 6 :(得分:-3)

无需在任何地方进行任何更改,只需使用即可 使用getActionBar().setTitle(title)getSupportActionBar代替FragmentActivity。它对我来说很好。