You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何从Activity返回至之前的Fragment

解决从City Activity返回至Hotel Fragment的问题

嘿,作为Android新手碰到这个问题太正常啦,我来一步步帮你搞定~

一、默认返回行为(最简单的方式)

其实系统本身就帮你处理了基础的返回逻辑:

  • 当你从HotelFragment通过Intent启动City.java后,MainActivity会被推到后台但不会被销毁。
  • 此时按下设备的返回键,或者在City.java里调用finish()方法,系统会自动销毁City Activity,回到MainActivity,而MainActivity会自动恢复之前显示的HotelFragment。

不过如果你发现返回后没有回到HotelFragment,大概率是MainActivity的代码有问题——比如在onResume()里每次都重新加载了默认Fragment。检查下MainActivity.java里有没有类似这样的代码:

@Override
protected void onResume() {
    super.onResume();
    // 这种写法会导致每次回到MainActivity都加载HomeFragment,覆盖之前的HotelFragment
    getSupportFragmentManager().beginTransaction()
        .replace(R.id.fragment_container, new HomeFragment())
        .commit();
}

如果有,赶紧删掉这段,或者加个判断:只有当Fragment容器里没有Fragment时,才加载默认Fragment。

二、手动添加返回按钮(比如顶部导航栏的返回箭头)

如果想在City Activity里加一个自定义的返回按钮(比如ActionBar的返回箭头),可以这么做:

  1. 在City.java里启用ActionBar返回箭头
    在onCreate()方法里添加:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_city);
        
        // 启用ActionBar的返回按钮
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setTitle("选择城市"); // 设置标题,可选
        }
    }
    
  2. 处理返回按钮的点击事件
    重写onOptionsItemSelected()方法:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            // 点击返回箭头,关闭当前Activity
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    

    这样点击顶部的返回箭头,就会回到之前的HotelFragment啦。

三、额外注意点

  • 确保你在HotelFragment里启动City Activity的代码是正常的,比如:

    // HotelFragment.java里的跳转代码
    Intent intent = new Intent(getActivity(), City.class);
    startActivity(intent);
    

    这里用getActivity()获取上下文是正确的,因为Fragment依附于MainActivity。

  • 如果需要从City Activity返回数据给HotelFragment,可以用registerForActivityResult(AndroidX推荐的方式),不过这是进阶需求,如果你暂时不需要可以先忽略~

内容的提问来源于stack exchange,提问作者rk_1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:26:34