在我将AppCompat-v7更改为21.0.0并且编译没有问题后,我的应用程序崩溃了。
它给了我错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setIcon(int)' on a null object reference
在这一行:
getActionBar().setIcon(R.drawable.ic_action_bar);
适用于AppCompat-v7 20.0.0,但不适用于21.0.0。
答案 0 :(得分:85)
您需要致电getSupportActionBar()
on an ActionBarActivity
。不要拨打getActionBar()
- 这在旧设备上不可用,而对于appcompat-v7
的新r21版本,我希望它会一直返回null
,因为新{ {1}}禁用并替换系统操作栏。
答案 1 :(得分:10)
如果您的活动是AppCompatActivity,您可以获得如下操作栏:
android.support.v7.app.ActionBar mActionBar = getSupportActionBar();
答案 2 :(得分:2)
Object actionBar = getSupportActionBar();
android.support.v7.internal.app.WindowDecorActionBar bar = (android.support.v7.internal.app.WindowDecorActionBar) actionBar;
如果您正在开发针对21SDK的应用,但app会在较旧的sdk下使用,那么上面的这一行就是解决方案。
当您的活动延伸ActionBarActivity时,您无法在21SDK下使用getActionBar()
答案 3 :(得分:0)
在所有代码中用android.support.v7.app.ActionBar替换ActionBar。并使用setSupportActionBar()从AppCompatActivity扩展您的活动。使用android支持v7依赖。