我在活动中使用工具栏作为操作栏。我正在尝试添加方法getActionBar().setDisplayHomeAsUpEnabled(true);
到 Activity.java 文件,用于旧设备的向上导航。
该方法在 Android Studio 中产生以下错误消息:
方法调用可能会产生 java.lang.NullPointerException
工具栏上的向上导航在较新的设备上运行良好...现在我正在尝试找出如何确保它适用于较旧的设备。
请指教。
来自 build.gradle:
dependencies {
compile "com.android.support:appcompat-v7:22.1.0"
}
来自AndroidManifest.xml:
android:theme="@style/Theme.AppCompat.NoActionBar.FullScreen"
来自 styles.xml
<style name="Theme.AppCompat.NoActionBar.FullScreen" parent="AppTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
来自 Activity.java
public class CardViewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cardviewinput);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
// Up navigation to the parent activity for 4.0 and earlier
getActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationIcon(R.drawable.ic_action_previous_item);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
}
实际上 Android Studio 不会向您显示“错误消息”,它只是一个警告。
一些答案建议使用断言,Dalvik 运行时有断言 https://stackoverflow.com/a/5590378/3743265默认情况下关闭,因此您必须实际打开它才能真正执行某些操作。在这种情况下(断言被关闭),您实际上所做的只是欺骗 Android Studio 不向您显示警告。另外,我不喜欢在生产代码中使用“assert”。
在我看来,你应该做的事情很简单。
if(getActionBar() != null){
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Update:如果您使用的是操作栏的支持库版本,则应将 getActionBar() 替换为 getSupportActionBar()。
if(getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)