gpt4 book ai didi

android - 如何修复 getActionBar 方法可能会产生 java.lang.NullPointerException

转载 作者:IT老高 更新时间:2023-10-28 13:13:01 25 4
gpt4 key购买 nike

我在 Activity 中使用工具栏作为我的操作栏。我正在尝试将方法 getActionBar().setDisplayHomeAsUpEnabled(true); 添加到 Activity.java 文件中,以便为旧设备进行向上导航。

该方法在 Android Studio 中产生以下错误消息:

Method invocation may produce 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 运行时有 assertion默认情况下关闭,因此您必须实际打开它才能实际执行某些操作。在这种情况下(断言已关闭),您实际上所做的只是欺骗 Android Studio 不向您显示警告。另外,我不喜欢在生产代码中使用“断言”。

在我看来,你应该做的很简单。

if(getActionBar() != null){
getActionBar().setDisplayHomeAsUpEnabled(true);
}

更新:如果您使用的是操作栏的支持库版本,则应将 getActionBar() 替换为 getSupportActionBar()。

if(getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

关于android - 如何修复 getActionBar 方法可能会产生 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29786011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com