我一直在尝试向操作栏添加后退按钮。
我希望我的视图看起来像这样:
我想在操作栏的左侧添加后退按钮。
我添加了这段代码
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
但它不起作用。
我怎样才能解决这个问题?
我一直在尝试向操作栏添加后退按钮。
我希望我的视图看起来像这样:
我想在操作栏的左侧添加后退按钮。
我添加了这段代码
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所建议的那样,我在 上添加了一个检查itemId
,以使其在操作栏上有多个按钮的情况下正常工作。
这个对我有用:
@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 中的后退按钮时,将调用 onSupportNavigateUp() 方法。
设置后
actionBar.setHomeButtonEnabled(true);
您必须在 AndroidManifest.xml 中配置父活动
<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 Manifest 如果总是从同一个 Activity 调用设置 Activity,您可以在 Android Manifest 中建立关系。Android 将自动在 ActionBar 中显示“返回”按钮
<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 会调用 Settings Activity,您可以像这样创建它。首先在扩展 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);
}
然后,检测“返回按钮”按下并告诉 Android 关闭当前打开的 Activity。
@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 bar = getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);
然后在onOptionsItemSelected
方法中设置按钮点击的操作
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
您需要menuItem.getItemId()
在方法android.R.id.home
中进行检查onOptionsItemSelected
更简单更好:对于 API >= 16
只需为 Manifest 中的每个活动添加“parentActivityName”。后退按钮将自动将您带到父活动。
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
使用它来显示后退按钮并移至上一个活动,
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);
}
}
如果其他人需要解决方案
@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;
}