Shwing Error : Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)
Shwing Error : Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)
我想在我的 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 之外添加它,用于导航回父级 activity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
并设置父级 activity
<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>
你的activity_stream.xml里面有工具栏吗?
还要检查您的导入。
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
我想在我的 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 之外添加它,用于导航回父级 activity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
并设置父级 activity
<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>
你的activity_stream.xml里面有工具栏吗? 还要检查您的导入。
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;