我需要在我的一个针对Gingerbread的Android应用程序中使用动作栏和片段的组合。所以我使用了v7支持库中的操作栏和v4支持库中的片段,并使用FragmentActivity扩展了我的类。
当我输入行
时出错actionbar = getSupportActionBar();
错误指出 getSupportActionBar()未定义类型myFragmentClass (我的类名)。没有支持库,代码可以完美运行。我的问题有解决方案吗?
谢谢!
答案 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
。它对我来说很好。