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

来源:互联网 发布:淘宝上的入驻品牌 编辑:程序博客网 时间:2024/05/21 12:09

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());    }}

0 0
原创粉丝点击