安卓应用开发入门:两个 Activity 之间的跳转

2023-10-30

关键知识

Intent

Intent(意图),主要实现Activity之间的来回切换和数据传递。Intent是一种轻量级的消息传递机制,这种消息描述了应用中一次操作的动作、动作涉及数据、附加数据。Android系统根据此Intent的描述,负责找到对应的组件,并将Intent传递给调用的组件,并完成组件的调用。

例如,在一个联系人维护的应用中,当一个联系人列表屏幕(假设对应的Activity为listActivity)上,单击某个联系人后,希望能够看到此联系人的详细信息(假设对应的Activity为detailActivity)。为此,listActivity需要构造一个Intent。这个Intent用于告诉系统,用户要做“查看”的动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intent intent),将构造的Intent传入,系统会根据Intent中的描述,到AndroidManifest.xml中找到满足此Intent要求的Activity。系统会调用找到的Activity,即detailActivity,最终传入Intent。而detailActivity则会根据此Intent中的描述,执行相应的操作。

主要步骤

  1. 新建一个IntentActivity。
  2. 书写strings.xml文件。
  3. 修改activity_1.xml文件中的代码。去掉其中的“TextView”,添加一个“Botton”。
  4. 书写Activity1.java的代码。
  5. 新建一个Activity2。
  6. 书写strings.xml文件。
  7. 书写activity_2.xml文件。
  8. 书写Activity2代码。

详细步骤

  1. 新建一个IntentActivity
    file —> new —> Activity —> Empty Activity
  2. 书写strings.xml文件
<resources>
    <string name="app_name">IntentAvtivity</string>
    <string name="myFirstButton">我的第一个Button</string>
</resources>

  1. 修改activity_1.xml文件中的代码。去掉其中的“TextView”,添加一个“Botton”。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Activity1">

    <Button
        android:id="@+id/myButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="137dp"
        android:text="@string/myFirstButton"
        android:textAllCaps="false"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
  1. 书写Activity1.java的代码。
package com.example.lyf.twoavtivity;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Activity1 extends AppCompatActivity {
   private Button myButton1=null;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_1);
       myButton1= (Button) findViewById(R.id.myButton1);
       myButton1.setOnClickListener(new MyButtonListener());
   }
   class MyButtonListener implements 
   View.OnClickListener{
       @Override
       public void onClick(View v) {
           Intent intent=new Intent();
           intent.putExtra("test","跳转");
           intent.setClass(Activity1.this,Activity2.class);
           Activity1.this.startActivity(intent);
       }
   }
}

  1. 新建一个Activity2。
    与创建 Activity1 方法相同。
    file —> new —> Activity —> Empty Activity

  2. 书写strings.xml文件。

<resources>
    <string name="app_name">TwoAvtivity</string>
    <string name="myFirstButton">我的第一个Button</string>
    <string name="title_activity_name">Activity2</string>
</resources>

  1. 书写activity_2.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".Activity2">


   <TextView
       android:id="@+id/myTextView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginStart="55dp"
       android:layout_marginLeft="55dp"
       android:layout_marginTop="63dp"
       android:text="TextView"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
  1. 书写Activity2代码。
package com.example.lyf.twoavtivity;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class Activity2 extends AppCompatActivity {
    private TextView myTextView=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
        Intent intent=getIntent();
        String value=intent.getStringExtra("test");
        myTextView=(TextView) findViewById(R.id.myTextView);
        myTextView.setText(value);
    }
}

最后,打开模拟器运行应用查看效果。

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

安卓应用开发入门:两个 Activity 之间的跳转 的相关文章

随机推荐

  • 【原创】oracle的tpc-c测试及方法

    大家好 很高兴来到博客园分享自己的所见所得 希望和大家多多交流 共同进步 本文重点在于简介使用BenchmarkSQL对oracle进行tpcc的测试步骤 只是一个简单入门的过程 开源测试工具 BenchmarkSQL 平台 windows
  • c++ strncmp及strcmp实现

    int strcmp m const char s1 const char s2 assert s1 NULL s2 NULL while s1 0 s2 0 字符串前面部分都相同 if s1 s2 gt 0 return 1 if s1
  • 2022最新版-李宏毅机器学习深度学习课程-P3深度学习基本概念

    一 如何表示更复杂的模型 单变量 上述的 y wx b线性模型x和y的关系是一条直线 即使改变w和b的值 即改变线性模型的斜率和与y轴的交叉点位置 仅仅代表y的值与x的值成正比 永远无法拟合更复杂的关系 因此我们需要一个更复杂的 更有弹性的
  • 第六章 传统金融行业的区块链战略

    一 银行的区块链战略 一 高盛 高 盛集团 Goldman Sachs 是一家国际领先的投资银行 向全球提供广泛的投资 咨询和金融服务 拥有大量的多行业客户 包括私营公司 金融企业 政府机构以及个人 高盛 集团成立于1869年 是世界上历史
  • nuxt3 window is not defined错误

    问题 在 nuxt 中直接使用 window document 会报 ReferenceError window is not defined 原因 原因其实也比较简单 由于 nextjs 是服务端渲染 它会预渲染页面后生成 HTML 然后
  • Android ViewBinding更新,include得到优化

    前言 之前的ViewBinding对include很不友好 以至于用起来很是难受 到目前优化后不再强制转换FrameLayout布局 使用更加舒适 解决 用之前的例子 直接上代码 这次我们给include的xml加上id
  • 如何终止或杀死进程

    中止进程 一个进程在任务完成之后 将会自动结束 如果要中途中止该进程的话 有两种方法 1 对于在前台运行的程序 直接通过组合键 Ctrl C 来中止 2 对于在后台运行的程序 则需要找到它的进程号 然后使用 kill 命令结束该进程 可以使
  • Java并发编程实战——java内存模型(JMM)和重排序数据依赖性规则

    文章目录 JMM的介绍 内存模型抽象结构 JMM抽象结构模型 重排序的数据依赖性 happens before规则 内存屏障 volatile语义中的内存屏障 final语义中的内存屏障 JMM的介绍 当多个线程访问同一个对象时 如果不用考
  • 自动化测试相关

    bug的风险等级 建议 一般 严重 致命 bug的生命周期 新建 待修复 审核 关闭 注意 bug关闭后可能会再次打开 测试人员关闭一个bug后需要做回归测试 验证次bug是否会引入新的bug 如果没有 则代表该bug彻底关闭 软件测试的流
  • Basic Level 1003 我要通过! (20分)

    题目 答案正确 是自动判题系统给出的最令 人欢喜的回复 本题属于PAT的 答案正确 大派送 只要读入的字符 满足下列 条件 系统就输出 答案正确 否则输出 答案错误 得到 答案正确 的条件是 1 字符 中必须仅有P A T这三种字符 可以包
  • 【已解决】mysqld: File ‘.\杩滅▼浼氳瘖-鐥呯悊绉?slow.log‘ not found (Errcode: 2 - No such file or directory)

    卸载mysql 删除和mysql相关的文件 MySQL踩坑 含泪填完 MySQL踩坑 含泪填完 1 控制面板 删除之前安装失败的mysql对应的版本 2 删除C Program Files x86 MySQL下的文件夹 见下图 3 显示隐藏
  • 懒汉式之并发安全问题

    在高并发场景下的懒汉式创建对象 造成ID重复创建 代码见下图 并发场景下 iDCreator对象并未随类的创建而创建 而是在需要的时候进行创建 导致垃圾回收器可以对其进行回收 从而有可能同一时间戳 前后两次的对象不一致 造成出现两个不同的i
  • redis 主从配置参数详解

    转 https www cnblogs com chenmh p 5121849 html undefined 安装redis 下载redis wget http download redis io releases redis 3 0 7
  • 基于51单片机的温控风扇设计

    作者 何朋伟 19计科一班 宏定义 define uchar unsigned char define uint unsigned int 包含头文件 include
  • Java系统多个JSSE认证

    问题描述 由于项目需要 系统需要多个JSSE认证 登录使用SSL 邮件收取 解决办法 一 对于需要一次JSSE认证来说 可以通过 1 InstallCert工具来安装证书 Copyright 2006 Sun Microsystems In
  • 模型实战(10)之win10下tensorRT部署yolov5算法

    win10下tensorRT部署yolov5算法 针对yolov5的众多版本 目前有几种部署方法 1 tensorrtx 大神针对众多网络模型 包含yolov5众多版本 开源的一个转换工具 部署方式为 onnx gt wts gt engi
  • egret native使用自定义字体

    参考文章白鹭官方链接 除了文章提到的修改内容 还有文章没提到的一些内容如下 1 在egretProperties json文件中添加字库名称 2 添加字库资源 以上是android apk包内改变字体的方法 而移动端浏览器的设置方法则需要另
  • 关于layer.js中layer.confirm弹出框看不到或者不居中问题处理

    在jsp页面body 标签上加上style height 100 就可以解决
  • 在Android中实现Unity3D的背景是透明的 u3d显示在安卓的上一层

    在Unity中 可以通过设置Camera的背景 Camera下的Environment下的Background Type设置为Solid Color Background需要设置黑色透明度0 即ARGB为 0 0 0 0 透明度不为0则无法
  • 安卓应用开发入门:两个 Activity 之间的跳转

    关键知识 Intent Intent 意图 主要实现Activity之间的来回切换和数据传递 Intent是一种轻量级的消息传递机制 这种消息描述了应用中一次操作的动作 动作涉及数据 附加数据 Android系统根据此Intent的描述 负