Android ActionBar在不同的活动上返回null(API19)

时间:2014-07-09 22:31:00

标签: android android-activity android-actionbar

在主要活动中,我有这段代码

actionBar = getActionBar();
actionBar.setTitle("Title");

它有效。

然后在第一个活动调用的另一个活动中,我显示了相同的操作栏,当我调用getActionBar()来更改标题时,它总是返回null,为什么?

这是调用setTitle时崩溃的活动,因为actionbar为null

public class SearchResultsActivity extends Activity {

protected GridView grid;
protected TextView categoryTitle;
protected int theme;
private AQuery aq;
private String strSearchString;
private ActionBar actionBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search_results);

    setTheme(android.R.style.Theme_Holo);
    setContentView(Themes.getGridLayout(theme));

    aq = new AQuery(this);

    actionBar=getActionBar();
    actionBar.setTitle("new title"); // <- Here it crashes because actionbar is null

    grid = (GridView) findViewById(R.id.grid);
    grid.setOnItemClickListener(gridItemListener);

    init();

    handleIntent(getIntent());
}

操作栏中的菜单可以在所有活动中正常运行

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我的情况是在调用getActionBar()之前使用setContentView()。

另请注意您的应用主题

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Holo.Light" >
    ...
</application>

我认为只能使用<item name="android:windowActionBar">true</item>的主题。

答案 1 :(得分:0)

您正在从活动扩展。如果您从ActionBarActivity延伸,该怎么办?尝试一下,告诉我们是否有什么东西坏了。您必须添加v7 appcompat library