`
felixour
  • 浏览: 32911 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Android学习之参数传递

 
阅读更多

在编写Android代码的过程中,我们经常能用到参数传递:
比如在之前我们写的登录界面,我们点击登录之后,不仅是要校验我们的用户名和密码是否正确,同时还要传递参数到下一个界面,就像我们以前写JFrame的时候,从一个窗体跳转到了另外一个窗体,显示新窗体对象的时候,我们总需要将一些数据传到新窗体使用,这时候就需要传参数。

 

首先介绍传参数所要用到的工具————Intent类
Intent类作为从一个界面跳转到另一个界面的工具,也承担着传递参数的作用。
那么首先我们来介绍一下Intent跳转页面的方法:
在一个按钮对应的onClick方法里,我们创建一个Intent对象

 

Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);

 

这是一种创建方法,我们也可以运用Intent的构造方法:

 

Intent intent = new Intent(this,SecondActivity.class);

 

然后,我们只需要调用跳转方法就可以了:

this.startActivity(intent);

 

传参数分为两种:
一、传基本数据类型:
比如说我们这里传一个String字符串

 

this.putExtra("name","tth");

 
这里我们使用的是putExtra(String name, String value)这个方法
里面的参数相当于一个集合,name相当于集合名字,value相当于集合的值。
我们在跳转后的SecondActivity里可以用对应的name来找到我们所需要的值:
在SecondActivity的onCreate方法里,我们可以首先获取intent对象:

 

Intent intent = this.getIntent();

 
然后通过name来取得我们所需要的value:


 

String username = intent.getStringExtra("name");

 

二、传对象:
同样我们使用的是intent对象,同样是putExtra方法
首先我们声明一个Student类,其中包含姓名和年龄两个属性,最最最重要的是,这个类一定要实现序列化接口:java.io.Serializable,否则不能传递这个类的对象。

 

Student stu = new Student("Ted", 21);//实例化stu对象
intent.putExtra("student", stu);//将这个对象通过intent传走

 

注意这里调用的是putExtra(String name, Serializable value)方法。
那么另外一边,我们则进行接受:

 

Student stu = (Student) intent.getSerializableExtra("stu");

 

注意getSerializableExtra(String name)这个方法返回的是Object对象,要将其进行强制转型,才能获取我们需要的对象。

 

其实在putExtra方法里,我们注意到Bundle这个类,其实是通过调用Bundle的putString方法进行传递的,下面就是putExtra方法:

 

public Intent putExtra(String name, String value) {
    if (mExtras == null) {
        mExtras = new Bundle();
    }
    mExtras.putString(name, value);
    return this;
}

 

那么putString方法又是如何的呢,首先调用unparcel进行数据初始化,然后mMap其实就是个HashMap,所以我们这里的传递其实就是一个集合的传递。

 

public void putString(String key, String value) {
    unparcel();
    mMap.put(key, value);
}

 

这就是Android里的参数传递!

2
0
分享到:
评论

相关推荐

    JNI 参数传递 Android 自定义对象

    本篇文章将深入探讨JNI中参数传递的基本数据类型、自定义对象以及系统对象。 一、基本数据类型的参数传递 在JNI中,基本数据类型如int、float、char等的传递相对简单。Java中的基本类型在C/C++中都有对应的类型。...

    android两个APK相互调用并传参数

    通过以上方法,我们可以灵活地实现Android两个APK之间的相互调用和参数传递。在实际开发中,应根据项目需求和安全性考虑选择合适的方式。记住,始终确保代码的可读性和可维护性,添加必要的注释以方便他人(和未来的...

    android学习之自定义view(一)

    - 使用`attr.xml`文件定义自定义属性,比如颜色、线条宽度等,这样可以通过XML布局文件传递给自定义View。 - 在自定义View类中使用`TypedArray`读取这些属性值,并应用到绘制过程中。 3. **事件处理**: - ...

    android与H5交互传参

    本文将深入探讨Android与H5之间的参数传递,包括H5调用Android的方法以及Android调用JavaScript的方法。 首先,让我们关注H5调用Android的方法。Android提供了WebView组件,它允许在应用程序中嵌入一个浏览器内核,...

    android jni 传递对象的demo

    本示例"android jni 传递对象的demo"聚焦于一个特定的应用场景:在Java层和C/C++层之间传递对象。 首先,我们要理解在Java和C/C++之间传递对象的挑战。Java对象在JVM(Java虚拟机)中以引用的形式存在,而C/C++则不...

    Android activity间的数据传递,选择头像

    2. **Bundle**:Intent的extras实际上就是Bundle,我们也可以直接创建一个Bundle对象,然后将其作为参数传递给Intent。这种方式在传递大量或复杂数据时更有优势。 3. **静态成员变量**:虽然不推荐,但有时为了简单...

    Android Activity之间的跳转以及传递参数源代码下载

    Activity之间的跳转和参数传递是Android开发中的重要概念,对于理解和构建复杂的Android应用至关重要。本篇文章将详细解析这一主题,并提供源代码下载,帮助开发者深入理解并实践。 首先,Activity之间的跳转是通过...

    Fragment通信及参数传递

    "Fragment通信及参数传递"是Android开发中的一个重要知识点,尤其在处理复杂的布局和交互时。在这个实例中,我们将探讨如何通过接口调用来实现Fragment之间的通信和参数传递。 首先,理解Fragment通信的重要性:在...

    Android编程实现启动另外的APP及传递参数的方法

    了解了基本的启动和参数传递后,开发者还可以根据需求利用`Intent`的其他特性,例如设置`FLAG_ACTIVITY_NEW_TASK`以开启新的任务栈,或者`FLAG_ACTIVITY_CLEAR_TOP`来清理栈顶所有活动,只保留目标`Activity`。...

    Android学习笔记1

    从给定的文件信息来看,这些内容主要是Android开发的学习笔记,涵盖了从基础控件的添加、布局的设置、样式主题的调整到Activity生命周期的管理等多方面的知识点。以下是对文件内容的具体分析: 1. 添加TextView控件...

    Android学习笔记(十二)——使用意图传递数据的几种方式

    在Android应用开发中,意图(Intent)是连接各个组件(如Activity、Service、BroadcastReceiver)的重要桥梁,也是数据传递的一种常见手段。本篇笔记将详细探讨Android中使用意图传递数据的几种方式,帮助开发者深入...

    android学习笔记之二

    在“android学习笔记之二”中,我们主要探讨的是如何在Android平台上实现一个用户登录的模拟工程。这个项目,名为“UserLoginTestProject”,旨在帮助开发者理解和实践Android应用中的用户认证流程。通过这个实例,...

    在aar库中传递参数demo

    因此,推荐使用上述方法之一,确保在编译时或运行时正确传递和替换参数。 在"LocalAARReference-master"这个压缩包中,可能包含了示例代码来演示如何在aar库中传递参数并在主项目中替换这些参数。通过查看和学习...

    Android:Handler学习实例2(HandlerThread、Bundle传递参数)

    setContentView(R.layout.activity_main); //生成一个HandlerThread对象,实现了 使用Looper来处理消息队列的功能 HandlerThread handlerThread = new HandlerThread("handler_... //使用Message中的obj传递参数

    博客《Fragment详解之五——Fragment间参数传递》对应源码

    博客《Fragment详解之五——Fragment间参数传递》的源码应该包含了上述两种方法的实现示例,这对于学习和实践中理解Fragment间的通信非常有帮助。通过阅读和分析这些代码,开发者可以更好地掌握如何在Android应用中...

    Android例子源码Activity间的数据传递

    通过学习这个"Android例子源码Activity间的数据传递",开发者可以深入理解Android中的数据传递机制,这对于构建功能丰富的应用程序至关重要。实践这些概念可以帮助提高代码的可维护性和用户体验。

    学习android需要的Java知识点列表.pdf

    - **方法与函数**:学习如何定义和调用方法,理解参数传递的方式。 #### 3. 面向对象编程基础 - **类与对象**:理解类的概念,学会如何定义类及创建对象。 - **继承与多态**:掌握继承的基本概念及其在实际编程中的...

    android ndk开发数据结构传递示例

    一份可供学习的ndk开发示例 使用ndk r4b开发 主要示范如何从android java端传递数据结构以及从ndk接收数据结构 有相应教程: http://blog.csdn.net/hdw_191/archive/2011/02/16/6188852.aspx

    kotlinAndroid学习PPTX.rar

    通过这份“KotlinAndroid学习PPTX”,你将能深入理解 Kotlin 在 Android 开发中的运用,从基本语法到高级特性的实践,逐步掌握使用 Kotlin 创建高效、安全的 Android 应用的技巧。同时,你还可以探索更多的开源库和...

Global site tag (gtag.js) - Google Analytics