Android中Activity跳转到具体的Fragment的方法

2023-11-12

1、首先在需要跳转的Activity写此代码:

Intent intent = new Intent(from, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.putExtra("flag", 3); 
startActivity(intent);

2、在MainActivity中写此代码:

@Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        int mFlag = intent.getIntExtra("flag", 0);
        if (mFlag == 3) { //判断获取到的flag值
            changeTab(mFlag);
        }
    }
// 跳转到对应的fragment
public void changeTab(int position) {
        switch (position) {
            case 0:
                mRgTab.check(R.id.rb_0);
                break;
            case 1:
                mRgTab.check(R.id.rb_1);
                break;
            case 2:
                mRgTab.check(R.id.rb_2);
                break;
            case 3:
                mRgTab.check(R.id.rb_3);
                break;
        }
    }

Activity的启动模式有四种:

  1. standard 默认的启动方式。在该模式中,每启动一个新活动,都会创建一个新的实例,并在任务栈中入栈,处于栈顶的位置。假设你不停地进入同一个活动,你点击了十次,就要返回十次才能退出程序,因为你在返回栈中创造了十个相同的实例,尽管活动是一样的。

  2. singleTop 栈顶单实例。启动一个新活动时,系统会检查该活动是否已经位于任务栈栈顶,如果是的话直接使用已存在的栈顶活动,否则就创建新活动并压入栈顶。
    (当该activity处于task栈顶时,可以复用,直接onNewIntent)

  3. singleTask 栈中单实例。 和 singleTop 类似,不过这里是检查整个任务栈的活动,如果发现已经存在该活动就将位于该活动上方的活动全部出栈,该活动成为新的栈顶。
    (oncreate该activity并销毁在他之上的其他activity)

  4. singleInstance 全局单实例。最特殊的模式,系统为该模式的活动分配一个独立的任务栈,该任务栈有且只有一个该活动实例。也就是说,如果已经创建过目标活动实例,那么将不会创建新的任务栈,而是唤醒之前创建过的活动实例。
    (应用场景:地图,Activity初始化需要大量资源)

这四种模式中,standard模式是默认的模式,其他三个想要使用的话,要在 AndroidMainFest 文件中进行修改(通过给对应的 activity 设置 launchMode 属性)。
上面分析的启动模式都是静态设置的,也就是在 Manifest 文件中设置的。

Task

Task就是一个任务栈,里面用来存放Activity,第一个进去的(Activity)处于栈的最下面,而最后创建的(Activity)则处于栈的最上面。从Task中取出(Activity)是从最顶端取出,也就是说先进后出,后进先出。而Activity在Task中的顺序是可以控制的,在Activity跳转时用到Intent Flag可以设置新建Activity的创建方式。

详细的概念可以查找与Intent的Flag标志相关的资料。

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP ||Intent.FLAG_ACTIVITY_CLEAR_TOP); 这行代码的意思是 不再启动新的activity,并且系统会把要启动的Activity之上的Activity全部弹出栈空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android中Activity跳转到具体的Fragment的方法 的相关文章

  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 反思 Groovy 脚本中声明的函数

    有没有一种方法可以获取 Groovy 脚本中声明的函数的反射数据 该脚本已通过GroovyShell目的 具体来说 我想枚举脚本中的函数并访问附加到它们的注释 Put this到 Groovy 脚本的最后一行 它将作为脚本的返回值 a la
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • Android Studio:无法启动守护进程

    当我尝试在 Android Studio 中导入 gradle 项目时 遇到以下错误 Unable to start the daemon process This problem might be caused by incorrect
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 通过 ADB 拔出设备:“找不到服务”

    我必须测试我的应用程序在打瞌睡模式下的行为 根据文档 https developer android com training monitoring device state doze standby html testing doze 我
  • 运行 Jar 文件时出现问题

    我已将 java 项目编译成 Jar 文件 但运行它时遇到问题 当我跑步时 java jar myJar jar 我收到以下错误 Could not find the main class myClass 类文件不在 jar 的根目录中 因
  • Android:有没有办法以毫安为单位获取设备的电池容量?

    我想获取设备的电池容量来进行一些电池消耗计算 是否可以以某种方式获取它 例如 三星 Galaxy Note 2 的电池容量为 3100mAh 谢谢你的帮助 知道了 在 SDK 中无法直接找到任何内容 但可以使用反射来完成 这是工作代码 pu
  • 如何测试 spring-security-oauth2 资源服务器安全性?

    随着 Spring Security 4 的发布改进了对测试的支持 http docs spring io spring security site docs 4 0 x reference htmlsingle test我想更新我当前的
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • 如何修复“sessionFactory”或“hibernateTemplate”是必需的问题

    我正在使用 Spring Boot JPA WEB 和 MYSQL 创建我的 Web 应用程序 它总是说 sessionFactory or hibernateTemplate是必需的 我该如何修复它 我已经尝试过的东西 删除了本地 Mav
  • com.jcraft.jsch.JSchException:身份验证失败

    当我从本地磁盘上传文件到远程服务器时 出现这样的异常 com jcraft jsch JSchException Auth fail at org apache tools ant taskdefs optional ssh Scp exe
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 程序员们最恐惧的“代码”,一见就头疼,是老前辈留下来的代码!

    t行业是目前最赚钱的行业 程序员是目前最赚钱的职业之一 也是最容易过劳死的职业之一 虽然程序员们工资都很高 有的还会赚年薪 但是他们的工作真的是非常辛苦 因为程序员经常会熬夜写代码 在电脑前工作 他们脱发秃头的几率也非常高 由于程序员经常在
  • poco源码简单分析

    自动化工具poco源码简单分析 Airtest简介 Airtest是网易游戏开源的一款UI自动化测试项目 目前处于公开测试阶段 该项目分为AirtestIDE Airtest Poco Testlab四个部分 基于python脚本的方式 用
  • 【公告】博客专家 6 月发布原创/翻译文章奖励

    博客专家6月发布原创 翻译文章奖励 CSDN ID 所获奖励 malefactor 图灵社区技术图书 程序员杂志最新期刊 C币100 lmj623565791 图灵社区技术图书 程序员杂志最新期刊 C币100 jiangwei0910410
  • python TypeError: missing 1 required positional argument:'self'

    Python 调用类的函数时报错如下 TypeError seperate data missing 1 required positional argument self 报错原因 train data test data DataCle
  • 对spark dataframe join之后的列值NULL值进行填充为指定数值的操作

    众所周知 两个数据集如A B取JOIN操作的时候 其结果往往会出现NULL值的出现 这种情况是非常不利于后续的分析与计算的 特别是当涉及到对这个数值列进行各种聚合函数计算的时候 针对这种问题 当然从最简单的dataframe map来处理是
  • QThreadPool线程池的原理与使用

    一 为什么需要用线程池 现在所有的高性能服务器程序 几乎都会使用到线程池技术 从而更好且有效的榨干服务器性能 1 开多少个线程可以达到性能最佳 不知道 你有没有这个疑问 这是一种常见的线程使用方式 class MyThread public
  • list集合(接口)

    list集合 显而易见是用来存储数据的 可以把它看作是长度可变的数组 它是有序存储数据的 具有跟数组一样的索引 ArrayList LinkedList Vector Stack都是list接口的实现类 以ArrayList为例说明list
  • 1033 旧键盘打字 (20 分)

    题目 旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在 2 行中分别给出坏掉的那些键 以及应该输入的文字 其中对应英文字母的坏键以大写给
  • 基于Redis的BitMap实现签到、连续签到统计(含源码)

    微信公众号访问地址 基于Redis的BitMap实现签到 连续签到统计 含源码 推荐文章 1 springBoot对接kafka 批量 并发 异步获取消息 并动态 批量插入库表 2 SpringBoot用线程池ThreadPoolTaskE
  • mysql日期转换

    1 MySQL中和日期相关的函数 1 1 DATE FORMAT date format 主要用来将日期格式化函数 举例 SELECT DATE FORMAT NOW Y m d 1 2 STR TO DATE str format 主要用
  • 分析pandas的数据,分析某一列数据的长度分布等等

    分析数据 如分析sku的长度 import pandas as pd import numpy as np data file data data zh sku 80k csv 待分析的文件 def ana len file key Non
  • AI绘画:StableDiffusion实操教程-斗破苍穹-云韵-常服(附高清图下载)

    前段时间我分享了StableDiffusion的非常完整的教程 AI绘画 Stable Diffusion 终极宝典 从入门到精通 不久前 我与大家分享了StableDiffusion的全面教程 AI绘画 Stable Diffusion
  • HITICS-2018大作业 hello的一生

    摘 要 本论文详细介绍了hello程序在linux系统中从生成源代码到成功运行完毕被系统回收的整个过程 按照执行的先后顺序模块化介绍了hello c在计算机内部是系统具体执行了什么指令 如何执行的 用到了哪些知识等 本论文参考CSAPP课本
  • linux(centos) 保存退出vi编辑

    保存命令 按ESC键 跳到命令模式 然后 w 保存文件但不退出vi w file 将修改另外保存到file中 不退出vi w 强制保存 不推出vi wq 保存文件并退出vi wq 强制保存文件 并退出vi q 不保存文件 退出vi q 不保
  • Oracle存储过程获取入参出参(顺序,名字,类型,入参/出参)

    调用SQL语句 PROCEDURE NAME为过程名 自行替换要查询的过程名 POS为参数位置 NAME为参数名 TYPE为参数类型 IN OUT为入参 出参 SELECT A POSITION POS A ARGUMENT NAME NA
  • ABB 120 六轴机械手臂编程调试(三)

    下一步进行机械手臂的程序编写 程序只是进行简单的点位运动 实现抓取功能 程序控制的点位表 输入点位 点位描述 输出点位 点位描述 DI5 夹取完成 DO5 夹取物料 DI6 放料完成 DO6 放下物料 DI7 回原点 DO7 设备就绪 DI
  • Python练习——基础练习题2

    因为控制台会让不断输入 索性就把input放到注释里了 这一片主要练习if判断和while循环 初级 判断下列语句的打印结果 1 print True and True or True 2 print True and True or Fa
  • 因果图分析法例子

    某软件规格说明书包含这样的要求 第一列字符必须是A或B 第二列字符必须是一个数字 在此情况下进行文件的修改 但如果第一列字符不正确 则给出信息L 如果第二列字符不是数字 则给出信息M 解答 1 根据需求 分析出原因和结果如下 原因 1 第一
  • smbms(超市管理系统)源码 + 分析

    在项目开始之前 我们首先要对项目的整体架构分析一下 该项目一共分为四个模块 登录注销 用户管理 订单管理 供应商管理 其中用户管理 订单管理以及供应商管理都是需要对数据库进行crud的 项目的整体架构图如下 1 前期准备 1 项目架构 2
  • Android中Activity跳转到具体的Fragment的方法

    1 首先在需要跳转的Activity写此代码 Intent intent new Intent from MainActivity class intent addFlags Intent FLAG ACTIVITY SINGLE TOP