码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Android Studio(意图Intent)


    前言

    意图的作用:页面的跳转(从一个页面跳转到另一个页面)。

    意图的创建:需要哪些参数?首先,从哪个页面跳转到哪个页面;其二,跳转到另一个页面需要携带数据吗。

    下面介绍顺序:简单意图、携带数据、

    简单意图

    所谓简单意图,即只需要进行页面跳转不携带数据 。

    1. Intent intent = new Intent();
    2. intent.setClass(MainActivity.this,SecActivity.class);
    3. startActivity(intent);
    4. // setClass(Context,Class)
    5. // Context:跳转前的所在页面上下文
    6. // Class:目标要跳转的页面的class

     携带数据

    下面就是intent对象传数据的相关方法,可以看到我们可以传入很多类型的数据去满足我们的业务需求。下面也将举几个具体的例子。

    intent数据传递
    方法数据类型
    putExtra(String name, boolean value)布尔型
    putExtra(String name, byte value)字节型
    putExtra(String name, char value)字符型
    putExtra(String name, short value)短整型
    putExtra(String name, int value)整型
    putExtra(String name, long value)长整型
    putExtra(String name, float value)浮点型
    putExtra(String name, double value)双精度浮点型
    putExtra(String name, String value)字符串型
    putExtra(String name, CharSequence value)字符序列型
    putExtra(String name, Serializable value)可序列化对象
    putExtra(String name, Parcelable value)Parcelable 对象
    putExtra(String name, Bundle value)Bundle 对象
    putStringArrayListExtra(String name, ArrayList value)字符串列表
    intent数据获取

        先介绍页面窗口获取意图的方法,毕竟只有拿到意图我们才能使用intent对象的相关方法拿到传递到当前页面窗口的数据。

        Intent intent = getIntent();

        这个getIntent()方法是所有窗口页面对象都有的(在内部可以直接调用),因为窗口页面对象都extends AppCompatActivity。

        如果没有任何页面传递intent(没有页面跳转),那么getIntent()==null;只有当前页面窗口确实是跳转的目的页面,调用getIntent()才会获取到Intent对象。

    方法数据类型
    getBooleanExtra(String name, boolean defaultValue)布尔型
    getByteExtra(String name, byte defaultValue)字节型
    getCharExtra(String name, char defaultValue)字符型
    getShortExtra(String name, short defaultValue)短整型
    getIntExtra(String name, int defaultValue)整型
    getLongExtra(String name, long defaultValue)长整型
    getFloatExtra(String name, float defaultValue)浮点型
    getDoubleExtra(String name, double defaultValue)双精度浮点型
    getStringExtra(String name)字符串型
    getCharSequenceExtra(String name)字符序列型
    getSerializableExtra(String name)可序列化对象
    getParcelableExtra(String name)Parcelable 对象
    getBundleExtra(String name)Bundle 对象
    getStringArrayListExtra(String name)字符串列表
    String类型
    1. // 传递String数据(省略意图创建配置)
    2. intent.putExtra("name","joden");
    3. // 获取String数据
    4. Intent intent = getIntent(); // 获取窗口意图对象
    5. String getName = intent.getStringExtra("name");
    ArrayList类型
    1. // 发送
    2. List cuisineIds = new ArrayList(); // 省略添加数据操作
    3. intent.putStringArrayListExtra("sendCuisineIds", (ArrayList) cuisineIds);
    4. // 获取
    5. List cuisineIds = new ArrayList();
    6. cuisineIds = intent.getStringArrayListExtra("sendCuisineIds");
    List类型
    1. // 1. 首先需要引入Serializable接口,使对象可序列化
    2. public class OrderItem implements Serializable
    3. // 2. 意图添加Serializable型数据
    4. intent.putExtra("sendOrderItems", (Serializable) orderItems);
    5. // 3. 接受页面获取Serializable型数据
    6. List orderItemList = new ArrayList<>();
    7. orderItemList = (List) intent.getSerializableExtra("sendOrderItems");

     意图回传

        什么是意图回传?

        界面1发送intent1=>界面2获取intent1=>界面2发送intent2=>界面1获取intent2

        这个过程好像是“下发命令”,要保证:命令的接受者正确性、命令下发者确定接受者已经完成命令。

        当然,如果我们自己要实现也是可以的,但内部已有相关方法实现,所以我们学习使用即可,逻辑也很简单。

    1. // 1. start to skip page with intent and seek for a Result (MainActivity.java)
    2. Intent intent = new Intent(MainActivity.this,SecondActivity.class);
    3. this.startActivityForResult(intent,666);
    4. // 2. pass back intent (SecondActivity.java)
    5. Intent intent = new Intent();
    6. intent.putExtra("username","joden");
    7. setResult(888,intent);
    8. finish();
    9. // 3. deal with the intent data is passed back (MainActivity.java)
    10. @Override
    11. protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    12. super.onActivityResult(requestCode, resultCode, data);
    13. if(requestCode==666&&resultCode==888){
    14. String getMsg = data.getStringExtra("username");
    15. Toast.makeText(this,getMsg,Toast.LENGTH_SHORT).show();
    16. }
    17. }

    后言

     下一节将介绍数据存储的相关知识。

  • 相关阅读:
    JavaScript Json -笔记
    MDR上位效应服务器及本地运行
    入门JavaWeb之 Response 下载文件
    flutter 版本更新
    C++ Reference: Standard C++ Library reference: Containers: list: list: front
    Perl-->文件的操作
    ssh远程使用jupyter notebook
    ADPCM(自适应差分脉冲编码调制)的原理和计算
    浅析Relaxed Ordering对PCIe系统稳定性的影响
    一起学时序分析之建立/保持时间裕量
  • 原文地址:https://blog.csdn.net/m0_60633107/article/details/134251014
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号