我想在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" />
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句