Shwing错误:尝试调用虚拟方法'void androidx.appcompat.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)

问题描述 投票:1回答:3

我想在我的StreamActivity中实现Android ActionBar后退按钮,但出现此错误:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.schoolteacher/com.example.schoolteacher.StreamActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference

尽管我遵循了文档中的所有说明,但我不知道为什么这不起作用!另外,我在其他项目中也做到了这一点,并且可以正常工作。

这是我的代码:

StreamActvivty.java

public class StreamActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_stream);

        Toolbar toolbar = findViewById(R.id.toolbar);

        setSupportActionBar(toolbar);
        ActionBar actionBar= getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true); 

    }

}

styles.xml

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

清单

<activity android:name=".StreamActivity"
            android:label="@string/stream"
            android:parentActivityName=".ClassActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".ClassActivity" />
        </activity>
android android-actionbar
3个回答
1
投票
尝试一下

在onCreate中添加此内容

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

将其添加到onCreate之外,用于导航回父活动

@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { NavUtils.navigateUpFromSameTask(this); } return super.onOptionsItemSelected(item); }

并且还设置了家长活动

<activity android:name=".activity.CreateAccountActivity" android:parentActivityName=".activity.LoginActivity" />


0
投票
要将Toolbar用作ActionBar,首先请确保AndroidX支持库已添加到您的应用程序build.gradle (Module:app)文件中:

dependencies { ... implementation 'androidx.appcompat:appcompat:1.0.0' }

您必须禁用为ActionBar提供的主题。将主题从styles.xml更改为:

<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> </style> </resources>


0
投票
activity_stream.xml内是否有工具栏?还要检查您的进口。

import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.Toolbar;

© www.soinside.com 2019 - 2024. All rights reserved.