首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >getActionBar()返回null

getActionBar()返回null
EN

Stack Overflow用户
提问于 2011-07-29 07:40:25
回答 24查看 165.7K关注 0票数 184

我有个奇怪的问题。我正在用targetsdk 13做一个应用程序。

在我的主活动的onCreate方法中,我调用getActionBar()来设置我的动作栏。这在Android3.2模拟器上运行得很好,但是当使用Android3.0和3.1时,getActionBar()方法返回null。

我觉得这非常奇怪,我看不出有任何理由要这样做。这是模拟器的一个bug,还是我需要做些什么,以确保我的应用程序有一个actionbar?

解决方案:我想我已经找到了这个问题的解决方案。我没有使用setContentView来设置活动的布局。相反,我使用fragmentTransaction.add(android.R.id.content, mFragment, mTag)向活动中添加了一个片段。这在3.2版本中运行良好,但在早期的蜂巢版本中,如果您不在onCreate()方法中使用setContentView,则显然没有设置操作栏。因此,我通过在onCreate()方法中使用setContentView()方法并为其提供一个包含空FrameLayout的布局来修复它。我仍然可以像以前一样使用fragmentTransaction.add(android.R.id.content, mFragment, mTag)方法。

这不是最漂亮的修复方法,但它是有效的。

EN

回答 24

Stack Overflow用户

发布于 2014-12-31 04:54:22

可以使用getSupportActionBar()而不是getActionBar()方法。

票数 238
EN

Stack Overflow用户

发布于 2015-03-21 08:01:32

如果您使用的是支持库

代码语言:javascript
复制
import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity {

使用getSupportActionBar()而不是getActionBar()

*更新:

ActionBarActivity类现在已弃用:

代码语言:javascript
复制
import android.support.v7.app.ActionBarActivity;

我推荐使用:

代码语言:javascript
复制
import android.support.v7.app.AppCompatActivity
票数 48
EN

Stack Overflow用户

发布于 2016-01-27 11:35:35

如果您使用的是android.support.v7.app.AppCompatActivity,则使用

公共类HomeActivity扩展了AppCompatActivity {

那么您应该使用android.support.v7.app.ActionBar

代码语言:javascript
复制
  ActionBar ab = getSupportActionBar();

如果您使用的是android.support.v4.app.FragmentActivity,则使用

公共类HomeActivity扩展了FragmentActivity {

那么您应该使用android.app.ActionBar

代码语言:javascript
复制
    ActionBar ab = getActionBar();

如果您使用的是android.support.v7.app.ActionBarActivity,则使用

公共类HomeActivity扩展了ActionBarActivity {

您应该使用android.support.v7.app.ActionBar

代码语言:javascript
复制
   ActionBar ab = getSupportActionBar();
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6867076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档