在主要活动中,我有这段代码
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());
}
操作栏中的菜单可以在所有活动中正常运行
答案 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