Activity : 跳转与传值

自学Android之Activity:(三)使用Intent在Activity中跳转和传值(上) 在本篇中你将了解到: 1.常用的Button组件和TextView组件。 2.使用Intent在Activity中进行跳转。 3.在进行跳转动作时专递一些值。 阅读详情

Activity跳转

Activity之间的跳转主要是使用Intent来实现,分为显示跳转和隐式跳转两种:

  • 显示跳转是平时最常用的跳转方式,需要指明目标Activity的类名,并且只能调用应用内的Activity,不能跨应用启动Activity。
  • 隐式跳转不需要明目标Activity的类名,而是需要指定目标Activity的一些特征,当有符合指定特征的Activity存在时便会被启动。并且隐式跳转是可以跨应用启动Activity的。

假如学校里每一个教室是一个APP,每个教室里的同学是一个Activity的话:

  • 显示跳转就像在一个没有重名同学的教室里喊“王钢蛋同学请举手”,结果只有王钢蛋同学举手。
  • 隐式跳转就像在广播室里喊“D罩杯的同学请举手”,结果整个教学楼D罩杯的女同学都听到了广播,因为符合条件的可能不止一个人所以举手的女同学可能有多个。

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.activitydemo" >
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".Activity1" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Activity2" >
        </activity>
        <activity android:name=".Activity3" android:theme="@style/Theme.AppCompat.Dialog" >
        </activity>
    </application>
</manifest>

Activity1.Java

package com.activitydemo;

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 implements View.OnClickListener {
    private Button buttonOpenActivity2, buttonOpenActivity3;

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

        buttonOpenActivity2 = (Button) findViewById(R.id.btn_act1_1);
        buttonOpenActivity2.setOnClickListener(this);
        buttonOpenActivity3 = (Button) findViewById(R.id.btn_act1_2);
        buttonOpenActivity3.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent intent;
        switch(v.getId()) {
            case R.id.btn_act1_1:
                intent=new Intent(this, Activity2.class);
                startActivity(intent);
                break;
            case R.id.btn_act1_2:
                intent = new Intent("com.activitydemo.ACTION_START");
                startActivity(intent);
                break;
            default:
                break;
        }
    }
}

Activity2.Java

package com.activitydemo;

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

public class Activity2 extends AppCompatActivity implements View.OnClickListener {
    private Button buttonOpenActivity1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_activity2);
        buttonOpenActivity1 = (Button) findViewById(R.id.btn_act2_1);
        buttonOpenActivity1.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent intent=new Intent(this, Activity1.class);
        startActivity(intent);
    }
}

Activity3.Java

package com.activitydemo;

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

public class Activity3 extends AppCompatActivity implements View.OnClickListener {
    private Button buttonOpenActivity1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_activity3);
        buttonOpenActivity1 = (Button) findViewById(R.id.btn_act3_1);
        buttonOpenActivity1.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent intent=new Intent(this, Activity1.class);
        startActivity(intent);
    }
}

layout_activity1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/btn_act1_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="跳转到Activity2(显示跳转)"/>
    <Button
        android:id="@+id/btn_act1_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="跳转到Activity3(隐式跳转)"/>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical">
        <TextView
            android:text="Activity 1"
            android:textSize="30dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"/>
    </LinearLayout>
</LinearLayout>

layout_activity2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/btn_act2_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="返回Activity1"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical">
        <TextView
            android:text="Activity 2"
            android:textSize="30dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"/>
    </LinearLayout>
</LinearLayout>

layout_activity3.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/btn_act3_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="返回Activity1"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical">
        <TextView
            android:text="Activity 3"
            android:textSize="30dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"/>
    </LinearLayout>
</LinearLayout>

    在<action>标签中我们指明了当前活动可以响应com.activitydemo.ACTION_START这个action,而<category>标签则包含了一些附加信息,更精确地指明了当前的活动能够响应的Intent中还可能带有的 category。每个Intent中只能指定一个action,但却能指定多个category。只有<action>和<category>中的内容同时能够匹配上,Intent中指定的action和category时才能跳转。 android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法的时候会自动将这个category添加到Intent中。

利用隐式跳转的特点,我们可以在Activity中方便的调用各种系统程序和服务,例如可以按下面的方法修改Activity1.java:
1、打开网页

case R.id.btn_act1_2:
    intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("http://www.baidu.com"));
    startActivity(intent);
    break;

2、拨号

case R.id.btn_act1_2:
    intent = new Intent(Intent.ACTION_DIAL);
    intent.setData(Uri.parse("tel:13812345678"));
    startActivity(intent);
    break;

3、地图定位

case R.id.btn_act1_2:
    intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("geo:100,100"));
    startActivity(intent);
    break;

关于这部分Intent相关的内容,打算等详细学一下以后再详细写一下,网上已经有很多总结,可以先参考,比如:http://blog.youkuaiyun.com/wl455624651/article/details/7943252


Activity传值

Activity之间传递数据有下面这些方式:

  1. Intent
  2. Application context
  3. static 静态数据
  4. 外部存储
    (1). 文件存储:File
    (2). XML存储:Preference
    (3). 数据库存储:Sqlite
    (4). URI存储:Content Provider


这次先简单介绍一下Intent传值,Intent传值可以分为两种情况,
1、只传值,例如:Activity1传值给Activity2。

Activity1.java:传值给Activity2

Intent intent=new Intent(this, Activity2.class);
intent.putExtra("key1", "value1");
intent.putExtra("key2", 123);
startActivity(intent);

Activity2.java:取出Activity1传来的值

Intent intent = getIntent();
String strValue = intent.getStringExtra("key1");
int iValue = intent.getIntExtra("key2", 0);

2、传值并返回结果,例如:Activity1传值给Activity2,Activity2返回结果给Activity1
Activity1.java: 传值给Activity2

Intent intent=new Intent(this, Activity2.class);
intent.putExtra("key1", "value1");
intent.putExtra("key2", 123);
startActivity(intent);

Activity1.java: 取得Activity2的返回值

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode) {
        case 1:
            if(resultCode == RESULT_OK) {
                String strValue = data.getStringExtra("key1");
                int iValue = data.getIntExtra("key2", 0);
            }
            break;
        default:
            break;
    }
}

Activity2.java:取出Activity1传来的值

Intent intent = getIntent();
String strValue = intent.getStringExtra("key1");
int iValue = intent.getIntExtra("key2", 0);

Activity2.java:返回结果给Activity1

@Override
public void onClick(View v) {
    Intent intent=new Intent(this, Activity1.class);
    intent.putExtra("key1", "value2");
    intent.putExtra("key2", 456);
    setResult(RESULT_OK, intent);
    finish();
}
自学Android之Activity:(四)使用Intent在Activity中跳转和传值(下) 在本篇中,你将了解到: 1.隐式跳转Intent。 2.通过Intent打开其他APP。 3.通过Intent跳转至其他Activity后,关闭该Activity时返回数据。 4.通过Intent发送Bundle类型的数据。 阅读详情

相关推荐

Android Intent详解:Activity跳转、传值与回传机制全解析

在Android应用开发中,Activity作为界面载体遵循组件隔离设计,页面间无法直接持有对方引用,必须借助Intent这一标准化通信载体完成激活、传参和结果回收。Intent本质是系统级意图描述,内部通过Bundle存放数据,并在跨组件传递时经历序列化过程。理解Parcelable与Serializable的差异,掌握显式与隐式Intent的匹配规则,是构建稳定页面跳转逻辑的基础。无论是普通数据传递、对象序列化,还是通过startActivityForResult或Activity Result API

weixin_42550597的博客 183

Android Activity的隐式调用(跨进程)★

1.activity启动方式 Android 启动 Activity 分为两种:显式调用和隐式调用。显式调用需要明确地指定被启动对象的组件信息,包括包名和类名,而隐式调用则不需要明确指定组件信息。原则上一个 Intent 不应该既是显式调用又是隐式调用,如果二者共存的化,以显式调用为主。 2.隐式调用 隐式调用需要Intent能够匹配目标组件的IntentFilter中设置的过滤信息,如果不匹配将无法启动目前activity。这里,目标组件就是要启动的Activity,IntentFilter表示意图过滤,

zenmela2011的专栏 3413

Intent实现页面跳转和传值

Intent称为意图,是Android各大组件连接的桥梁1.Activity页面跳转同一个包内Intent intent = new Intent(); intent.setClass(MainActivity.this, SecondActivity.class); MainActivity.this.startActivity(intent);不同包内(1)明确的IntentIntent i

u012511163的博客 904

Activity的启动跳转与数据传递

Intent:直译为意图,通俗来说就是你想要做什么或想要去哪?作用:Intent是Activity、Service和BroadCastReceiver这三个应用组件进行通信的信使。例如:想要从FirstActivity启动另外一个SecondActivity,就必须使用Intent对象了。

weixin_53545232的博客 1504

Android开发环境搭建与Activity跳转实战:从Eclipse到Intent传值完整指南

移动应用开发中,Android凭借其开放性与组件化设计成为入门首选。环境搭建是第一个门槛,从JDK到Eclipse、Android SDK与ADT插件,四件套的版本兼容与配置逻辑经常让初学者卡壳。而Activity作为界面流转的核心组件,配合Intent实现页面跳转与数据传递,则是应用交互的基础链路。本文从环境变量配置、离线安装思路讲起,结合完整源码拆解Activity生命周期与Intent传值细节,并针对模拟器黑屏、R文件异常等高频问题给出避坑方案,最后延伸至startActivityForResult的

weixin_29171129的博客 254

Android-Android一个简单的北邮自习室查询系统

Android一个简单的北邮自习室查询系统

Activity跳转和Intent传值

多个Activity之间的调用 Intent显式调用 Intent隐式调用 使用Intent在Activity之间传递数据 直接使用Intent传递数据 使用Bundle传递数据 回传数据

简单点的博客 3416

告别死记硬背!用实际案例带你玩转UE5编辑器界面(附场景搭建练习)

本文通过实际案例教学,带你轻松掌握Unreal Engine5编辑器界面的核心功能。从创建基础场景到添加光源和可交互对象,逐步讲解内容浏览器、模式面板、世界大纲等模块的协同工作方式,告别死记硬背的学习模式。附场景搭建练习,助你快速上手UE5开发。

weixin_30566063的博客 729

【Android】机房座位预约系统Android端

这周要去武汉开会,下周项目就得用上。所以。。比较紧。加上导师不懂Android开发,只要开会就改需求,/(ㄒoㄒ)/~~反正他说先让学校用着,移动端和服务器的开发就给了两周时间。所以功能实现的比较简单,但代码做的比较容易扩展,都留了接口,后面更新起来也好做一些。通过这个工程,对Struts2的拦截器有了一些新体会。随着项目变大代码量变多,自然而然就会想起用一些设计模式了。不然代码根本没办法看。 整

努力奋斗 4810

创意视觉项目实战:用ESP32-S3+OV5640构建智能图像流系统

本文详细介绍了如何使用ESP32-S3开发板与OV5640摄像头模块构建智能图像流系统。从硬件连接到软件配置,涵盖Arduino环境搭建、图像采集优化、WiFi视频流传输及外设集成,为开发者提供完整的实战指南,助力智能家居和机器人视觉项目开发。

tech5的博客 1291

SAP生产订单(创建-下达-发料-报工-入库)全流程及反向流程

SAP创建下达报工入库发料以及取消发料取消入库,批量下达删除关闭,生产订单出入库查询和状态更改查询记录

weixin_38974136的博客 2万+

Activity的跳转与传值:startActivityForResult,setResult

Activity的跳转与传值:startActivityForResult,setResult

weixin_34357962的博客 171

海思Hi3516CV610--SPI NAND Flash移植实战:从手册到驱动的完整适配

本文详细介绍了海思Hi3516CV610芯片上SPI NAND Flash的移植实战,包括从手册解读到驱动适配的完整流程。以GD5F2GM7UEYIGR Flash为例,重点讲解了关键参数确认、模式选择、时序配置以及U-Boot和Linux内核驱动的具体实现步骤,帮助开发者快速完成Flash移植工作。

weixin_29158413的博客 447

《Android 应用开发基础教程》——第四章:Intent 与 Activity 跳转、页面传值

Intent是 Android 中的“意图”对象,主要用于:启动新的 Activity启动服务(Service)发送广播问题解决方案页面跳转后返回按钮不能用确保用于普通跳转,用于有结果返回的跳转接收参数为 null检查putExtra()和getExtra()的 key 是否一致Activity 未注册报错在中添加<activity>标签📌练习题编写两个 Activity,点击按钮将输入的姓名传递到第二个页面并显示使用 Bundle 传递一组学生信息(姓名、年龄、学号)

WenJGo的博客 1337

python实现带符号的二进制数转换十进制数 (附完整源码)

python实现带符号的二进制数转换十进制数 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 554

基于simulink的多能源系统协同与能源互联网的电网系统场景实例:虚拟电厂(VPP)中电网与储能集群的协同控制

本文详细介绍了使用Simulink构建虚拟电厂(VPP)与储能集群协同控制系统的完整建模过程。主要内容包括:1) VPP系统架构设计;2)分步骤建模过程,涵盖虚拟电厂系统创建、储能单元与集群建模、VPP控制器设计(核心)以及协同控制场景仿真;3)性能分析与典型应用场景。通过混合整数线性规划优化调度和智能指令分解策略,实现了VPP参与电力市场交易、电网调频调峰等功能,验证了系统在提升可再生能源消纳率(96%)、降低电网峰谷差(35%)等方面的优异性能。该建模方法为能源互联网中的分布式资源聚合与协同控制提供了实

xiaoheshang_123的博客 468

Android开发:Activity生命周期、页面跳转和传值

一、Activity生命周期 Activity的生命周期主要有:onCreate、onStart、onResume、onPause、onStop、onDestroy public class Main1 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); .

游手好闲 1439

彻底解决JDK安装包点击后无反应

jdk双击无法安装,jdk双击没反应,jdk安装包双击后没反应。

renkai721的专栏 8938

Android Activity的跳转:普通跳转(显式跳转,隐式跳转)和传值跳转

Android Activity的跳转 1.普通跳转 @显式跳转 startActivity(new Instent(Activity.this,Activity2.class)); 注意:a---》b---》a(a跳转到b,按下back,回到a) 从一个Activity1跳转到另个Activity2,再由这个Activity2返回前面的Activity1,Activity的所执

程序员之路 1715

OpenCV简单应用:图像模糊处理

OpenCV是一个广泛使用的开源计算机视觉库,提供了丰富的图像处理和计算机视觉算法。本文将介绍如何使用OpenCV对图像进行模糊处理,并提供相应的源代码。该函数接受两个参数:第一个参数是输入图像,第二个参数是指定模糊核大小的元组。在这个例子中,我们使用了一个5x5的模糊核。您可以尝试不同大小的模糊核,以获得不同程度的模糊效果。函数和指定不同大小的模糊核,我们可以实现不同程度的模糊效果。该函数接受两个参数:第一个参数是窗口的名称,第二个参数是要显示的图像。在上面的代码中,我们首先使用。要运行上述代码,请将。

MwgmPhilosophy的博客 290

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

android-Activity的跳转与传值:startActivityForResult,setResult,onActivityResult

Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据。 Intent 相信都熟悉,显式隐式就不一一陈述了。 上代码。 public class AAcitvity extends Activity { private void A(){ Intent toB = new Intent(AAcitvity.this, BAcitv

cccwh的专栏 671

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android跳转到通话记录界面,第69章、初识Intent-打开另一个Activity:单向传值(从零开始学Android)...

在Android应用中实现activity之间的跳转使用intent机制。本例子简单地简绍如何利用intent使程序由MainActivity跳转到另一个OtherActivity并实现单向传值。一、设计界面1、MainActivity布局文件打开res/layout/activity_main.xml文件。输入以下代码:xmlns:android="http://schemas.android....

weixin_29127757的博客 238

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android第四讲笔记(Activity间的跳转与传值)

目录Activity的创建简单跳转案例实现跳转后返回到原来的页面Activity任务栈机制实现跳转后传值方法一方法二:实现Activity跳转回传值补充 Activity的创建 如下操作 我们创建的activity命名为MainActivity2,后面简称为Activity2,默认的简称为Activity。然后会生成一个java文件和一个xml布局 所有的activity都一定要在manifests中注册,刚刚创建的过程会自动注册。 简单跳转案例 核心代码 Intent intent=new Inte

a碟的博客 4084

Activity之间的传值

Activity之间的传值:   方法1: 1给2传值 Activity1:   final Intent intent = new Intent(mCtx,Activity1.class) ; //将当前用户传递下去 intent.putExtra("user", mUser); startActivity(intent);  里边mUser是一个对象,传的事实...

doloveme的专栏 119
上一篇: 优快云啊,你的MarkDown编辑器应该改良一下啦!
暗暗笑
博客等级 码龄20年 1粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值