添加后退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; }