`
aliusa
  • 浏览: 84390 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Activity间传递数据

阅读更多
Activity之间跳转,传值,主要是通过intent来连接,以及传递数据。
1.通过intentest.putExtra(“key,字符串”, value(基本数据类型));
Intent test = new  Intent();
test = putExtra("name", true);
包括:
public Intent putExtra (String name, double[] value)
public Intent putExtra (String name, int value)
public Intent putExtra (String name, CharSequence value)
public Intent putExtra (String name, char value)
public Intent putExtra (String name, float value)
public Intent putExtra (String name, byte[] value)
public Intent putExtra (String name, Serializable value) 
。。。。。。
2.通过Bundle
public Intent putExtra (String name, Bundle value);
public Intent putExtra (Bundle value);
Bundle类用作携带数据,类似于map。他存储的是 key-value的键值对。
通过put与get方法分别存取各种类型的数据
public void putString (String key, String value)
public String getString (String key)
下面详细介绍Bundle:
原文出处:
http://www.cnblogs.com/salam/archive/2010/10/27/1862730.html

3.传递自定义的序列化对象
自定义序列化类
public class Contacts implements Parcelable {
    public static final String PARCELABLE_KEY = "aliusa.cn.ui.Contacts.parcelableKey"; 
    private int id;
    private String name;

    public Contacts(int id,String name){
        this.name = name;
        this.id = id;
    }
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    @Override
    public int describeContents() {
        return 0;
    }

   //关键的事
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        
        dest.writeInt(id);  
        dest.writeString(name);
    }
    
    //关键的事情   
    public static final Parcelable.Creator<Contacts> CREATOR = new Parcelable.Creator<Contacts>() {   
        public Contacts createFromParcel(Parcel in) {   
            return new Contacts(in);   
        }   
  
        public Contacts[] newArray(int size) {   
            return new Contacts[size];   
        }   
    };   
    
    //关键的事
    private Contacts(Parcel in) {   
        id = in.readInt();  
        name = in.readString();
    }
}

传递参数
         Contacts contact = new Contacts("0001", "aliusa");
        Bundle bundle = new Bundle();   
        bundle.putParcelable(Contacts.PARCELABLE_KEY , contact);
        intent.putExtra(parcelableKey, contact); 


读取参数

final Contacts contact = (Contacts) getIntent().getExtras().getParcelable(Contacts.PARCELABLE_KEY);
一、API文档说明

  1.介绍

    用于不同Activity之间的数据传递

  1.重要方法

    clear():清除此Bundle映射中的所有保存的数据。

    clone():克隆当前Bundle

    containsKey(String key):返回指定key的值

    getString(String key):返回指定key的字符

    hasFileDescriptors():指示是否包含任何捆绑打包文件描述符

    isEmpty():如果这个捆绑映射为空,则返回true

    putString(String key, String value):插入一个给定key的字符串值

    readFromParcel(Parcel parcel):读取这个parcel的内容

    remove(String key):移除指定key的值

    writeToParcel(Parcel parcel, int flags):写入这个parcel的内容

二、实例
    //FirstActivity putdata
   。。。。。。
        Intent intent = new Intent();
        intent.setClass(FirstActivity.this, NextActivity.class);
        Bundle mBundle = new Bundle();
        //put data
        mBundle.putString("name", "aliusa"); 
        intent.putExtras(mBundle);
        startActivity(intent);
   。。。。。。
   //NextActivity getData
   。。。。。。
        //get data
        Bundle b=getIntent().getExtras();   
        String info=b.getString("name");  
        System.out.println("name ="+info);
   。。。。。。

三、与SharedPreferences的区别

  SharedPreferences是简单的存储持久化的设置,就像用户每次打开应用程序时的主页,它只是一些简单的键值对来操作。它将数据保存在一个xml文件中

  Bundle是将数据传递到另一个上下文中或保存或回复你自己状态的数据存储方式。它的数据不是持久化状

3.startActivityForResult(itent, int requestCode)
如果我们想在secondeActivity关闭的时候告知开启它的activity好做相应的处理的时候可以用
startActivityForResult(itent, int requestCode)配合
onActivityResult(int requestCode, int resultCode, Intent data){};来解决。
解释:
int requestCode,请求码,用于标识请求源,也就是区分什么地方开启了他。
int requestCode,结果码,标识什么时候关闭该页面返回。
Intent data,可以在关闭页面的时候,通过intent向上一个页面传递参数。
举例:
   。。。。。。
  在fistActivity中开启SecondActivity
  final long index = 2000;
  final Intent itent = new Intent(context,MergeDetailActivity.class);
  itent.putExtra(“index”, index);
  startActivityForResult(itent, CODE_MERGE_SUBMIT);

  在SecondActivity中取值
  Intent intent = getIntent();
  int index= intent.getLongExtra(“index”, 0);

  在secondActivity关闭的时候put data
  final Intent data = new Intent();
  data.putExtra(“index”,index );
  setResult(1, data);
  finish();

  secondeActivity关闭后在firstActivity中get Data
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == 1) {
            final int index = data.getLongExtra(“index”, -1);
            // do some special
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
分享到:
评论

相关推荐

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

    这个"Android例子源码Activity间的数据传递"着重展示了如何在不同的Activity之间有效地传递数据。以下是关于这个主题的详细解释: 1. **Intent**: Intent是Android中用于启动其他组件(如Activity、Service)或传递...

    Android-Activity之间数据传递的多种方式

    Intent是Android系统中用于启动组件(如Activity)的一种消息对象,同时也可以用来在组件间传递数据。Intent的数据传递有两种类型:显式和隐式。 1. 显式Intent:通过指定目标Activity的类名,可以精确地启动某个...

    两个Activity之间传递参数的代码

    Intent是Android中用来启动Activity或Service的类,也可以用于在Activity间传递数据。对于简单的数据类型(如字符串、整型、浮点型、布尔型等),我们可以在创建Intent时直接附加数据。 例如,在`LoginActivity....

    Activity review activity之间的数据传递

    通过Intent的`putExtras(Bundle)`和`getExtras()`方法,我们可以方便地在Activity间传递数据。 三、startActivityForResult():双向数据传递 当需要从启动的Activity返回数据时,可以使用`startActivityForResult...

    activity与activity利用接口相互传递数据

    当我们需要在两个Activity之间传递数据时,通常有多种方法,如Intent、Bundle、静态变量、文件、数据库等。本教程将聚焦于一种更为灵活的方式:通过接口进行数据传递。这种方式在某些复杂场景下特别有用,例如当数据...

    利用Application 在2个不同的Activity传递数据

    本文将详细讲解如何利用`Application`类在两个不同的Activity间传递数据,并探讨这种做法在保存登录状态中的应用。 首先,理解`Application`类的作用。`Application`是Android应用程序的基类,它在应用程序的生命...

    实验七 使用Intent在Activity间传输数据

    在Android应用开发中,Intent是连接应用程序组件的...熟练运用Intent在Activity间传递数据,将极大地提升应用程序的交互性和用户体验。同时,理解Intent的显式与隐式使用方式,有助于设计更灵活、可扩展的应用架构。

    在不同Activity之间传递数据的四种常用方法

    在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在...

    安卓activity间的数据传递

    1. **启动Activity并传递数据** 当我们启动一个新的Activity时,可以通过Intent对象传递数据。在Intent的构造函数中,我们可以传入目标Activity的类名,然后在Intent的putExtra()方法中添加数据。例如,传递一个...

    安卓开发-Activity间数据传递和回传

    本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据以及如何实现数据回传。 #### Activity间数据传递 假设我们有两个`Activity`:A和B。我们需要从A向B传递一些数据,以便B能够根据这些数据执行特定的...

    activity之间的数据传递

    此外,Bundle对象也可用于在Activity间传递数据,它与Intent结合使用: ```java Bundle bundle = new Bundle(); bundle.putString("key", "value"); Intent intent = new Intent(this, TargetActivity.class); ...

    安卓体重计算器java源程序 使用Intent在Activity间传输数据

    在Android应用开发中,Intent是连接应用程序组件的重要机制,它用于启动新的Activity或者服务,以及在组件之间传递数据。...理解并熟练运用Intent在Activity间传递数据,是每个Android开发者必须掌握的基础技能。

    activity间的数据传递Demo

    "activity间的数据传递Demo"就是一种常见的实践,它主要涉及的是Intent的使用,Intent是Android系统中用于启动组件(如Activity、Service等)并传递数据的重要工具。在本教程中,我们将深入探讨如何在不同的Activity...

    Activity之间传递数据

    "Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据类型、字符串、数组、集合以及自定义对象等。在Android中,Intent不仅用于启动新的Activity,还...

    Fragment与Activity传递数据

    4. **调用接口方法**:在需要传递数据的时机,Fragment调用接口中的方法,将数据作为参数传递给Activity。 例如: ```java public interface OnDataPassListener { void onDataPass(String data); } public class...

    用handler在两个activity之间传递数据

    资源包括如何在一个activity A里激活另一个activity B。 然后在两个activity之间用handler传输数据。在activity A里定义全局变量handler,用sendMessage来发数据,在handler里数据以消息队列的方式发送。

    利用Shared Preferences,在2个不同的Activity传递数据

    4. **在不同 Activity 间传递数据** - **写入数据**:在第一个 Activity 中,如用户登录后,你可以将用户名和密码保存到 Shared Preferences。 ```java SharedPreferences.Editor loginEditor = loginPrefs.edit...

    Activity间图片传递(3种方法)

    在Android开发中,Activity间的通信是至关重要的,其中包括数据的传递。当涉及到图片这种大对象时,我们需要采取一些特殊的方法来高效地进行传递。本文将详细介绍三种在Activity间传递图片的方法。 1. 资源ID间传递...

    利用广播Broadcast Receiver,在2个不同的Activity传递数据

    总结,BroadcastReceiver是Android系统中实现组件间通信的重要工具,特别适用于在Activity之间传递数据。通过创建BroadcastReceiver,注册它,发送Broadcast,以及在接收端处理数据,我们可以轻松地在两个不同的...

    Activity传递数据到另一个Activity并显示

    本教程将详细讲解如何在`Activity`之间传递数据,包括使用`Intent`和`Bundle`来实现实现简单功能,这对于初学者来说非常实用。 ### 1. `Intent`的使用 `Intent`是安卓系统中的一个核心组件,它用于表示应用程序中...

Global site tag (gtag.js) - Google Analytics