我有个奇怪的问题。我正在用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)
方法。
这不是最漂亮的修复方法,但它是有效的。
发布于 2014-12-31 04:54:22
可以使用getSupportActionBar()
而不是getActionBar()
方法。
发布于 2015-03-21 08:01:32
如果您使用的是支持库
import android.support.v7.app.ActionBarActivity;
public class MainActivity extends ActionBarActivity {
使用getSupportActionBar()
而不是getActionBar()
*更新:
ActionBarActivity类现在已弃用:
import android.support.v7.app.ActionBarActivity;
我推荐使用:
import android.support.v7.app.AppCompatActivity
发布于 2016-01-27 11:35:35
如果您使用的是android.support.v7.app.AppCompatActivity,则使用
公共类HomeActivity扩展了AppCompatActivity {
那么您应该使用android.support.v7.app.ActionBar
ActionBar ab = getSupportActionBar();
如果您使用的是android.support.v4.app.FragmentActivity,则使用
公共类HomeActivity扩展了FragmentActivity {
那么您应该使用android.app.ActionBar
ActionBar ab = getActionBar();
如果您使用的是android.support.v7.app.ActionBarActivity,则使用
公共类HomeActivity扩展了ActionBarActivity {
您应该使用android.support.v7.app.ActionBar
ActionBar ab = getSupportActionBar();
https://stackoverflow.com/questions/6867076
复制相似问题