在向上导航的对象引用上获取 null
Getting null on object reference for Up navigation
这似乎可行,但不确定我是否必须将它添加到每个 Activity?
android:theme="@style/Theme.AppCompat"
随着 类 的扩展 ActionBarActivity
这是我在清单中所做的:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.shmira.shmira.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Book"
android:theme="@style/Theme.AppCompat"
android:label="Shmira" >
</activity>
class 看起来像这样:
public class Book extends ActionBarActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.book);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar actions click
switch (item.getItemId()) {
// lets user travel back to where they came from
case android.R.id.home:
finish();
return true;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
在您的代码中,您使用的是 getActionBar(),而基础 class 是 ActionBarActivity。您应该改用上面的代码。
如果您使用的是支持库,即 ActionBarActivity
在调用 setContentView
后添加以下行:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
如果您没有使用支持库,即 Activity
,那么只需将 getSupportActionBar()
更改为 getActionBar()
.. 并且不要忘记添加 android:theme="@style/Theme.AppCompat"
至 AndroidManifest.xml
要返回到 MainActivity
而不是向上遍历堆栈,请将 ActivityA 定义为 AndroidManifest.xml
中 ActivityB 的父级,如下所示:
<activity
android:name=".Book"
android:label="Shmira">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.shmira.shmira.MainActivity" />
</activity>
尝试在 AndroidManifest.xml
的 AcivityTag 中添加 Activity 的 ParentActivity
<activity
android:name=".Book"
android:label="@string/book"
android:parentActivityName="ParentActivity">
尝试在您的 oncreate 中添加以下代码
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
这似乎可行,但不确定我是否必须将它添加到每个 Activity?
android:theme="@style/Theme.AppCompat"
随着 类 的扩展 ActionBarActivity
这是我在清单中所做的:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.shmira.shmira.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Book"
android:theme="@style/Theme.AppCompat"
android:label="Shmira" >
</activity>
class 看起来像这样:
public class Book extends ActionBarActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.book);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar actions click
switch (item.getItemId()) {
// lets user travel back to where they came from
case android.R.id.home:
finish();
return true;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
在您的代码中,您使用的是 getActionBar(),而基础 class 是 ActionBarActivity。您应该改用上面的代码。
如果您使用的是支持库,即 ActionBarActivity
在调用 setContentView
后添加以下行:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
如果您没有使用支持库,即 Activity
,那么只需将 getSupportActionBar()
更改为 getActionBar()
.. 并且不要忘记添加 android:theme="@style/Theme.AppCompat"
至 AndroidManifest.xml
要返回到 MainActivity
而不是向上遍历堆栈,请将 ActivityA 定义为 AndroidManifest.xml
中 ActivityB 的父级,如下所示:
<activity
android:name=".Book"
android:label="Shmira">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.shmira.shmira.MainActivity" />
</activity>
尝试在 AndroidManifest.xml
的 AcivityTag 中添加 Activity 的 ParentActivity <activity
android:name=".Book"
android:label="@string/book"
android:parentActivityName="ParentActivity">
尝试在您的 oncreate 中添加以下代码
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);