Android开发:从主Activity跳转至其他Activity时如何显示ActionBar返回按钮
嘿,作为Android新手遇到这个需求太正常啦!这是开发中非常常见的场景,我分几种主流情况一步步给你讲清楚怎么实现:
1. 先在Manifest里关联父Activity(关键一步)
这一步能让系统自动帮我们处理返回逻辑,省不少代码:
打开项目里的AndroidManifest.xml,找到你要加返回按钮的那个Activity的<activity>标签,添加上android:parentActivityName属性,值就是你的主Activity完整类名(比如你的主Activity叫MainActivity,那就是.MainActivity或者完整包名com.yourapp.package.MainActivity)。如果要兼容API 16以下的老设备,还要加个<meta-data>标签,示例代码如下:
<activity android:name=".SecondActivity"> <!-- 指定父Activity,兼容API 16及以上系统 --> android:parentActivityName=".MainActivity" <!-- 兼容API 15及以下的旧设备 --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity>
2. 在目标Activity里启用返回按钮
接下来在跳转过去的那个Activity的onCreate()方法里,添加启用返回按钮的代码,分两种情况:
情况一:用原生ActionBar(非AndroidX项目)
如果你的项目没用到AndroidX,Activity继承自Activity,直接加这行:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); // 开启ActionBar的返回按钮 getActionBar().setDisplayHomeAsUpEnabled(true); }
情况二:用AndroidX的AppCompatActivity(现在大部分新项目都是这个)
如果你的Activity继承自AppCompatActivity,要换成getSupportActionBar(),还要加个非空判断避免空指针:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); // 启用返回按钮,先判断ActionBar是否存在 if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } }
3. 自定义返回逻辑(可选,按需添加)
虽然第一步配置后系统会自动跳回父Activity,但如果你需要在返回前做些自定义操作(比如保存用户输入的数据),可以重写onOptionsItemSelected()方法:
@Override public boolean onOptionsItemSelected(MenuItem item) { // 判断点击的是返回按钮 if (item.getItemId() == android.R.id.home) { // 这里加你的自定义逻辑,比如保存数据 finish(); // 关闭当前Activity,回到主Activity return true; } return super.onOptionsItemSelected(item); }
如果不需要自定义操作,这一步可以直接跳过,系统会自动处理返回。
额外场景:用Toolbar代替原生ActionBar
如果你的项目用自定义Toolbar实现ActionBar(现在Material Design风格的项目常用),步骤稍微调整下:
- 先在布局文件里添加Toolbar:
<androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" />
- 在Activity的
onCreate()里把Toolbar设为ActionBar,再启用返回按钮:
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); // 启用返回按钮 if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); }
后续的返回事件处理和前面的方法一样就行。
做完这些操作,你从主Activity跳转到目标Activity后,ActionBar左边就会出现返回箭头,点击就能回到主页面啦~
内容的提问来源于stack exchange,提问作者Kazi Kowshik

