您的位置:首页 > 移动开发 > Android开发

Intent 传递数据

2016-03-02 19:30 302 查看

Intent 传递数据

@(Android)

Intent 传递数据
Intent 传递简单数据
基本数据
SYNTAX

EXAMPLES

数组
SYNTAX

EXAMPLES

集合
SYNTAX

EXAMPLES

Intent 传递对象
SYNTAX

EXAMPLES

Intent 传递Bitmap
直接传递

通过Bundle传递

通过byte传递

Intent 传递简单数据

基本数据

SYNTAX

数据类型存数据取数据
String
putExtra(String name, String value)
getStringExtra(String name)
int
putExtra(String name, int value)
getIntExtra(String name, int defaultValue)

EXAMPLES



数组

SYNTAX

数组类型存数据取数据
String
putExtra(String name, String[] value)
getStringArrayExtra(String name)
int
putExtra(String name, int[] value)
getIntArrayExtra(String name)

EXAMPLES

存数据

Intent intent = new Intent(IntentTestActivity.this,IntentDataActivity.class);
intent.putExtra("StringArray",new String[]{"刘备","关羽","张飞"});
// value 可以为其他类型,如 int,float...数组
startActivity(intent);


取数据

Intent intent = getIntent();
String[] strArray = intent.getStringArrayExtra("StringArray");


集合

SYNTAX

数组类型存数据取数据
String
putStringArrayListExtra(String name, ArrayList<String> value)
getStringArrayListExtra(String name)
Integer
putIntegerArrayListExtra(String name, ArrayList<Integer> value)
getIntegerArrayListExtra(String name)

EXAMPLES

存数据

Intent intent = new Intent(IntentTestActivity.this,IntentDataActivity.class);
ArrayList<String> strList = new ArrayList<>();
strList.add(0,"刘备");
strList.add(1,"关羽");
strList.add(2,"张飞");
intent.putStringArrayListExtra("StringList",strList);
startActivity(intent);


取数据

Intent intent = getIntent();
ArrayList<String> strList = intent.getStringArrayListExtra("StringList");


Intent 传递对象

SYNTAX

类型存数据取数据
1
putExtra(String name, Serializable value)
getSerializableExtra(String name)
2
putExtra(String name, Parcelable value)
getParcelableExtra(String name)
3
putExtra(String name, Parcelable[] value)
getParcelableArrayExtra(String name)
4
putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
getParcelableArrayListExtra(String name)

EXAMPLES

存数据

Intent intent = new Intent(IntentTestActivity.this,IntentDataActivity.class);
Student student = new Student("吕布",30);
intent.putExtra("Student",student);
startActivity(intent);


取数据

Intent intent = getIntent();
Student student = intent.getParcelableExtra("Student");


Intent 传递Bitmap

直接传递

bitmap实现了Parcelable接口,可以直接传递。有大小限制!!(1MB)

发送Bitmap的Activity

Intent intent = new Intent(SendActivity.this, ReceiveActivity.class);
Bitmap bitmap = xxx; //xxx根据实际情况获取
intent.putExtra("BITMAP",bitmap);
startActivity(intent);


接收Bitmap的Activity

Intent intent = getIntent();
if(intent!=null){
Bitmap bm = intent.getParcelableExtra("BITMAP");
}


通过Bundle传递

发送Bitmap的Activity

Intent intent = new Intent(SendActivity.this, ReceiveActivity.class);
Bundle bundle = new Bundle();
Bitmap bitmap = xxx; //xxx根据实际情况获取
bundle.putParcelable("BITMAP", bitmap);
intent.putExtra("bundle", bundle);
startActivity(intent);


接收Bitmap的Activity

Intent intent = getIntent();
if(intent!=null){
Bundle bundle = intent.getBundleExtra("bundle");
Bitmap bm = bundle.getParcelable("BITMAP");
}


通过byte[]传递

Bitmap和byte[]相互转换

Bitmap转byte[]

private byte[] convertBitmap2Bytes(Bitmap bm){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG,100,baos);
return baos.toByteArray();
}


byte[]转Bitmap

private Bitmap convertBytes2Bitmap(byte[] buff){
Bitmap bm = BitmapFactory.decodeByteArray(buff,0,buff.length);
return bm;
}


实现代码

发送Bitmap的Activity

Intent intent = new Intent(SendActivity.this, ReceiveActivity.class);
byte[] buff = convertBitmap2Bytes(cover);
intent.putExtra("buff",buff);
startActivity(intent);


接收Bitmap的Activity

Intent intent = getIntent();
if(intent!=null){
byte[] buff = intent.getByteArrayExtra("buff");
Bitmap bm = convertBytes2Bitmap(buff);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 数据 对象 位图