您好我不确定为什么在使用getActionBar().setTitle("test")
时出现错误,但是当我使用getSupportActionBar().setTitle("test")
时,一切正常。所以我做了一些研究,发现我必须使用getSupportActionBar()
来扩展AppCompatActivity
的活动。
我不太确定为什么会这样,想要解释一下?
为什么我不能import android.app.ActionBar
然后使用getActionBar()
(我尝试了这个并使用setTitle()
方法。它返回Attempt to invoke virtual method 'void android.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference
)?< / p>
我很清楚Toolbar
的存在,但我想使用ActionBar
来实现向后兼容。
答案 0 :(得分:2)
AppCompatActivity是旧版Android的活动,直到最新版本。因此,如果您的targer应用程序是android 2.3 - 6.0,则必须扩展appcompactactivity而不仅仅是普通活动。和方法getActionBar旨在与活动一起使用。 getSupportActionBar旨在与appCompactActivity一起使用
您导入的是来自其他项目的类,而不是您的活动中已初始化的实际对象。并且在您的活动中,您没有初始化您导入的类,然后它变为NPE(空指针异常)
答案 1 :(得分:1)
使用AppCompatActivity
代替ActionBarActivity
是正确的方法。不推荐使用正常用法,因为AppCompatActivity
提供了您想要的向后兼容性。
您不应该知道Toolbar
,因为Toolbar
完全支持AppCompat
,并且具有与框架小部件相同的功能和API。在AppCompat
中,Toolbar
在android.support.v7.widget.Toolbar
类中实现。
一些参考资料:
答案 2 :(得分:0)
逻辑是操作栏用于材料设计,工具栏用于材料设计。
两者并不共存。我的意思是你不能在邮政材料设计时代使用行动吧。
您可以比较设备版本并相应地切换,或者简单地使用supportedtoolbar,它在内部为您完成。