我想在我的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>
在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" />
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>
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;