Android Activity与Fragment之间的跳转实例详解

发布时间 - 2026-01-10 22:50:27    点击率:

Activity及Fragment之间的跳转

直接跳转

基本使用方法

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  public void jump(View view) {
    Intent intent = new Intent(this, VideoPlayActivity.class);
    intent.putExtra("video_id", "1");
    startActivity(intent);
  }
}

public class VideoPlayActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video_play);

    Intent intent = getIntent();
  }
}

借助工具类

然而并没什么卵用

public static void startActivity(Context context, Class clazz,Bundle data) {
  Intent intent = new Intent(context, clazz);
  if(data != null){
    intent.putExtras(data);
  }
  context.startActivity(intent);
}

推荐方案

  1. 把new Intent()放在目标Activity,这样可以onCreate里的getIntent形成对应
  2. 更容易理解和管理一个出口,多个入口的情况
  3. 较方便维护传递数据的key和value(即key由目标Activity来定义,value是实际的来源)
public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  public void jump(View view) {
    startActivity(VideoPlayActivity.newIntent(this, "1"));
  }

}

public class VideoPlayActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video_play);

  }

  public static Intent newIntent(Context context, String vid) {
    Intent intent = new Intent(context, VideoPlayActivity.class);
    intent.putExtra("video_id", vid);
    return intent;
  }
}

Fragment跳转

  • 首先需要一个空的构造方法,Fragment恢复重建要使用。
  • 使用newInstance代替构造方法传参
  • 在Fragment.onCreate方法获取实参
public class MainFragment{

  public MainFragment() {
    // Required empty public constructor
  }

  public static MainFragment newInstance(int pos) {
    MainFragment fragment = new MainFragment();
    Bundle args = new Bundle();
    args.putInt("pos", pos);
    fragment.setArguments(args);
    return fragment;
  }

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
      pos = getArguments().getInt("pos");
    }
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # Activity与Fragment之间的跳转  # Activity与Fragment跳转  # Activity与Fragment跳转实例详解  # Android 两个Fragment之间的跳转和数据的传递实例详解  # Android编程使用Fragment界面向下跳转并一级级返回的实现方法  # Android基础之Fragment与Activity交互详解  # Android 管理Activity中的fragments  # Android从Fragment跳转到其他Activity的简单实例  # 跳转  # 放在  # 多个  # 希望能  # 谢谢大家  # 更容易  # 要使  # layout  # activity_main  # setContentView  # super  # jump  # putExtra  # VideoPlayActivity  # startActivity  # video_id  # view 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  详解MySQL数据库的安装与密码配置  简单实现jsp分页  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel如何处理文件下载请求?(Response示例)  canvas 画布在主流浏览器中的尺寸限制详细介绍  Laravel Session怎么存储_Laravel Session驱动配置详解  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel API资源类怎么用_Laravel API Resource数据转换  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  大连网站制作公司哪家好一点,大连买房网站哪个好?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  高防服务器:AI智能防御DDoS攻击与数据安全保障  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Laravel怎么判断请求类型_Laravel Request isMethod用法  百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  如何在腾讯云服务器快速搭建个人网站?  Java遍历集合的三种方式  北京网站制作的公司有哪些,北京白云观官方网站?  如何在景安服务器上快速搭建个人网站?  Laravel如何处理异常和错误?(Handler示例)  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何用虚拟主机快速搭建网站?详细步骤解析  如何快速生成高效建站系统源代码?  Laravel安装步骤详细教程_Laravel环境搭建指南  如何在万网ECS上快速搭建专属网站?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  网站页面设计需要考虑到这些问题  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  JavaScript如何实现错误处理_try...catch如何捕获异常?  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  济南网站建设制作公司,室内设计网站一般都有哪些功能?  原生JS获取元素集合的子元素宽度实例  电商网站制作价格怎么算,网上拍卖流程以及规则?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  html如何与html链接_实现多个HTML页面互相链接【互相】  html5的keygen标签为什么废弃_替代方案说明【解答】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  jQuery中的100个技巧汇总  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Windows Hello人脸识别突然无法使用  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)