android中intent的最基本三种使用方式:

一:启动Activity,service或者Broadcast;

二:应用间的交互或者通讯;

三:多个Activity和service之间传递数据。


Intent可以传递的数据类型用多种。基本上分为五种;

一:传递简单和基本的数据类型(包括int,char,string等类型的数据);

二:Bundle类型

三:Serializable对象(通过serializable接口传递序列化数据);

四:parcelable对象(通过parcelable接口传递包裹类型的数据);

五:intent类型;


注意向:Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,parcelable的编程实现更加复杂,但具有更高的效率和性能,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable。

代码实现了intent一般的数据传递,bundle类型和parcelable对象的数据传递:

MainActivity.class

public class MainActivity extends Activity implements View.OnClickListener {private Button Btn_input;
    private Button Btn_bundle;
    private Button Btn_Parcelable;
    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Btn_input =(Button)findViewById(R.id.Btn_input);
        Btn_bundle = (Button)findViewById(R.id.Btn_bundle);
        Btn_Parcelable = (Button)findViewById(R.id.Btn_Parcelable);

        Btn_input.setOnClickListener(this);
        Btn_bundle.setOnClickListener(this);
        Btn_Parcelable.setOnClickListener(this);
    }public void onClick(View view){switch (view.getId()){
//            通过putextra来传递类似char,string,int等类型的简单数据。
//            case R.id.Btn_input:
//                Intent intent  = new Intent(MainActivity.this,SecondActivity.class);
//                intent.putExtra("key_str","传递简单基础的数据");
//                startActivity(intent);
//                break;

//            case R.id.Btn_bundle:
//                str = "通过bundle来传递封装的多个数据类型";
//                Bundle bundle = new Bundle();
//                bundle.putInt("key_bundle_int",1);
//                bundle .putString("key_bundle_str",str);
//                Intent intent_01 = new Intent(MainActivity.this,SecondActivity.class);
//                intent_01.putExtras(bundle);
//                startActivity(intent_01);
//                break;

            case R.id.Btn_Parcelable:Parcelable_Book book = new Parcelable_Book();
                book.setBookName("钢铁是怎么练成的");
                book.setAuthor("里古拉.奥斯特洛夫斯基");
                book.setPublishDate(1933);

                Intent intent_02 = new Intent(MainActivity.this,SecondActivity.class);
                Bundle bundle_01 = new Bundle();
                bundle_01.putParcelable("key_parcelable",book);
                intent_02.putExtras(bundle_01);
                startActivity(intent_02);
        }}
}

Parcelable代码为:

public class Parcelable_Book implements Parcelable{private String bookName;
        private String author;
        private int publishDate;

        public Parcelable_Book(){}public String getBookName(){return bookName;
    }public void setBookName(String bookName){this.bookName = bookName;
    }public String getAuthor(){return author;
    }public void setAuthor(String author){this.author = author;
    }public int getPublishDate(){return publishDate;
    }public void setPublishDate(int publishDate){this.publishDate = publishDate;
    }@Override
    public int describeContents(){return 0;
    }@Override
    public void writeToParcel(Parcel out, int flags){out.writeString(bookName);
        out.writeString(author);
        out.writeInt(publishDate);
    }public static final Parcelable.Creator<Parcelable_Book> CREATOR = new Creator<Parcelable_Book>(){@Override
        public Parcelable_Book[] newArray(int size){return new Parcelable_Book[size];
        }@Override
        public Parcelable_Book createFromParcel(Parcel in){return new Parcelable_Book(in);
        }};

    public Parcelable_Book(Parcel in){bookName = in.readString();
        author = in.readString();
        publishDate = in.readInt();
    }
}

SecondActivity代码为:

public class SecondActivity extends Activity {private String str = new String();
    private TextView TV_str_in;
    protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_second);
        TV_str_in = (TextView)findViewById(R.id.Tv_str_in);
//        Intent intent = getIntent();
//        通过getextra接受简单的数据类型
//        str = intent.getStringExtra("key_str");
//        TV_str_in.setText(str);
//        通过bundle传递数据
//        Intent intent_01 = getIntent();
//        Bundle bundle = intent.getExtras();
//        TV_str_in.setText("nember is :"+bundle.getInt("key_bundle_int")+"str is:"+bundle.getString("key_bundle_str"));
//        通过parcelable来传递数据
        Intent intent_02 = getIntent();
        Bundle bundle_01 = new Bundle();
        bundle_01 = intent_02.getExtras();
        Parcelable_Book book = bundle_01.getParcelable("key_parcelable");
        TV_str_in.setText("书名为:"+book.getBookName()+"\n作者名字是:"+book.getAuthor()+"\n出版时间是:"+book.getPublishDate());

    }
}

Android学习日记(yzy):intent传递的多种数据类型相关推荐

  1. Android学习之利用Intent传递数据

    你能通过这篇文章学习到什么? 1. 利用intent在两个activity之间传递数据 2. 利用intent在两个activity之间传递数据包 3. 利用intent获取到返回数据 很多人在刚开始 ...

  2. Android学习日记 Notification 通知

    Android学习日记 Notification 通知 文章目录 Android学习日记 Notification 通知 前言 使用步骤 总结 前言 下拉状态栏显示的通知功能 使用步骤 代码如下: p ...

  3. android学习日记 RecyclerView的简单使用

    android学习日记 RecyclerView的简单使用 文章目录 android学习日记 RecyclerView的简单使用 一.如何使用RecyclerView? 二.使用步骤 1.首先在bui ...

  4. Android 开发笔记——通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  5. Android 开发中使用Intent传递数据的方法

    Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.short ...

  6. Android学习笔记之数据传递

    Intent startActivity方法将调用请求发送给了ActivityManager,ActivityManager负责创建SecondActivity 显式Intent Intent构造函数 ...

  7. android学习日记一

    这几天在公司实习,公司主要是做android项目,以前在学校也学习过android,但是就学了点皮毛,在这里我准备把自己当做android一无所知的人,但是java会点的人,来系统的学习一下andro ...

  8. android学习日记——PreferenceActivity详解

    PreferenceActivity详解 何为PreferenceActivity 以下为官方解释: This is the base class for anactivity to show a h ...

  9. Android学习日记

    2021.2.27 星期六 // TODO 2/27 // 标识符 字母数字下划线$组成 不能数字开头 区分大小写 // 关键字 // 变量 变量类型 变量名 驼峰法 变量值 // 类 Pascal ...

  10. 【Android学习日记】

    (一) Android 开发基础 1 Android平台的特性 1)  应用程序框架支持组建的重用和替换,包括打电话应用程序.文件管理器等. 2)  Dalvik虚拟机专门为移动设备做了优化,Dalv ...

最新文章

  1. Samba服务搭建及详解
  2. monty python dead parrot-BBC十大英剧神作出炉!
  3. 陆基制导系统地面站布设策略
  4. signature=fc89d4352b6699754c14ce282ec75426,Method for Assembly of Nucleic Acid Sequence Data
  5. atthesametime啥意思_eachother造句并翻译
  6. 安装kali linux 2017.1 【二、安装VMware-tools 以及相关问题处理】
  7. php array_key_exists() 与 isset() 的区别
  8. 杭州自学python爬虫_金华自学python网络爬虫直播
  9. 删除网络信息服务器端,网络安全:手动清除gh0st远控服务端
  10. Python debug——TypeError: unhashable type(list/set/dict)
  11. 2019年最流行的50款开源软件
  12. java-for循环9的倍数(基础)
  13. 【数据分析】京东平台用户画像分析
  14. 计算机应用中dss是,在计算机应用中,英文缩写“DSS”表示( )。
  15. yun mysql 安装_yun安装mysql
  16. python strftime 中文 年 月 日
  17. 无信息变量选择(UVE)波长筛选算法--基于OpenSA开源库实现
  18. P2P流媒体直播点播(带宽节约95%以上)技术分享
  19. 【CYH-02】noip2018数论模拟赛:赛后题解
  20. 高光谱图像的SVM分类

热门文章

  1. 【联盛德W806上手笔记】九、DMA
  2. HIF转16位TIF或者PNG
  3. iphone计算机能算度分秒吗,‎App Store 上的“图形计算器”
  4. java有abc三边求周长语句_java 给定三个点由三个点求三角形周长和面积
  5. evga x58服务器芯片组,EVGA发布X58主板 首次涉足Intel芯片组
  6. 你知道两台Linux之间如何传输文件吗?
  7. Adobe Premiere Pro cs6 精简版 0xc000007b 应用程序无法正常启动
  8. MySQL闪回工具之my2sql
  9. 23是android版本几,关于sdk=23的android版本权限的问题
  10. Vivado IP核之浮点数加减法 Floating-point