添加后退button到操作栏

我一直在试图添加一个后退button到操作栏。

我希望我的观点如下所示: 在这里输入图像说明

我想添加操作栏左侧的后退button。

我添加了这个代码

ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); 

但它不起作用。

我怎样才能解决这个问题?

设置actionBar.setHomeButtonEnabled(true);

添加下面的代码:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // app icon in action bar clicked; goto parent activity. this.finish(); return true; default: return super.onOptionsItemSelected(item); } } 

 actionBar.setHomeButtonEnabled(true); 

然后添加以下内容

 @Override public boolean onOptionsItemSelected(MenuItem menuItem) { switch (menuItem.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(menuItem); } } 

正如naXa所build议的,我已经在itemId上添加了一个检查,以便在操作栏上有多个button时正常工作。

这个为我工作:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_your_activity); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // ... other stuff } @Override public boolean onSupportNavigateUp(){ finish(); return true; } 

当您使用SupportActionBar中的后退button时,将调用onSupportNavigateUp()方法。

设置后

  actionBar.setHomeButtonEnabled(true); 

您必须在您的AndroidManifest.xml中configuration父活动

 <activity android:name="com.example.MainActivity" android:label="@string/app_name" android:theme="@style/Theme.AppCompat" /> <activity android:name="com.example.SecondActivity" android:theme="@style/Theme.AppCompat" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.MainActivity" /> </activity> 

在这里寻找更多的信息http://developer.android.com/training/implementing-navigation/ancestral.html

有两种方法可以解决这个问题。

选项1:更新Android清单如果设置Activity始终是从同一活动调用的,则可以在Android清单中创build关系。 Android会自动在ActionBar中显示“后退”button

 <activity android:name=".SettingsActivity" android:label="Setting Activity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.example.MainActivity" /> </activity> 

选项2:更改ActionBar的设置如果您不知道哪个Activity将调用设置活动,则可以像这样创build它。 首先在您的活动中扩展ActionBarActivity(确保您的@imports匹配您正在寻找的兼容级别)。

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings_test); ActionBar actionBar = getSupportActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); } 

然后,检测到“后退button”,并通知Androidclosures当前打开的活动。

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // app icon in action bar clicked; goto parent activity. this.finish(); return true; default: return super.onOptionsItemSelected(item); } } 

这应该做到这一点!

你需要在onOptionsItemSelected方法中针对android.R.id.home检查menuItem.getItemId()

重复的Android的Sherlock的ActionBar向上button

更简单,更好:API> = 16

只需为Manifest中的每个活动添加“parentActivityName”即可。 后退button将自动把你的父母的活动。

 <activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" > 

用这个来显示返回button并移到上一个活动,

 final ActionBar actionBar = getSupportActionBar(); assert actionBar != null; actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.back_dark); @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } 

首先使用这个:

ActionBar bar = getSupportActionBar();

bar.setDisplayHomeAsUpEnabled(真);

然后在onOptionsItemSelected方法中设置button点击操作

  @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } } 

如果其他人需要解决scheme

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

在onCreate()方法中添加这一行

 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

那么重写这个方法

  @Override public boolean onSupportNavigateUp(){ finish(); return true; }