无法在这个位置找到: head2.htm
当前位置: 建站首页 > 新闻动态 > 公司新闻 >

Intent传送数据信息

时间:2021-01-29 20:52来源:未知 作者:jianzhan 点击:
出處: forwardyzk/article/details/在页面自动跳转的情况下,大家应用Intent,Intent如何传送数据信息,能够传送甚么数据信息呢.下边大家就下列这几便捷做详细介绍.1.Intent传送如何传送数据信息

出處: forwardyzk/article/details/

在页面自动跳转的情况下,大家应用Intent,Intent如何传送数据信息,能够传送甚么数据信息呢.下边大家就下列这几便捷做详细介绍.

1.Intent传送如何传送数据信息

2.Intent能够传送甚么种类数据信息

2.1.Intent传送基本数据信息和基本数据信息数字能量数组

2.2.Intent传送Parcelable目标

2.3.Intent传送Serializable目标

2.4.Intent传送String,Integer,CharSequence泛型结合

2. 5.Intent传送基本自定目标结合

3.如何应用startActivityForResult,OnActivityResult,setResut中间的如何传送数据信息

Intent如何传送数据信息

Intent中间传送数据信息是根据Bundle传送.

查询Intent目标的方式putExtra方式的源代码.

这儿是以传送int种类的数据信息为例子,你还可以查询传送别的种类数据信息的方式.核查看源代码,发觉实际上便是把传送的key-value放到了mExtras目标中,便是Bundle目标中.

获得数据信息的情况下,大家在总体目标Activity中,先获得Intent目标(getIntent()),随后应用getXXX方式,根据key获得值

Intent能够传送甚么种类的数据信息

Intent传送基本数据信息和基本数据信息数字能量数组

在MainActivity打开BaseActivity

在ManActivity中国传媒大学递数据信息

public final static String BASE = base 
 * 传送基本目标数据信息,和数字能量数组
 public void base() {
 Intent intent = new Intent(MainActivity.this, BaseActivity.class);
 intent.putExtra(BASE, 110);
 startActivity(intent);
 }

 

 

private void initData() {
 //获得Intent后,根据key获得相匹配的值,随后把值设定给TextView
 int base = getIntent().getIntExtra(MainActivity.BASE, 0);
 tv.setText(String.valueOf(base));

 

这儿就以int种类为例子,别的的基本数据信息种类使用方法和它是一样的.

Intent传送Parcelable目标

大家首先看官方网文本文档是如何完成这一插口的

务必重新写过writeToparcel和describeContents方式,务必建立一个Parcelable.Create 种类的CREATOR目标.

最先要自定Persion类,完成Parcelable插口.

 

public class Persion implements Parcelable {
 private String name;
 private int age;
 public Persion() {
 public Persion(String name, int age) {
 this.name = name;
 this.age = age;
 public String getName() {
 return name;
 public void setName(String name) {
 this.name = name;
 public int getAge() {
 return age;
 public void setAge(int age) {
 this.age = age;
 @Override
 public String toString() {
 return Persion{ +
 name= + name + +
 , age= + age +
 public static final Parcelable.Creator Persion CREATOR = new Parcelable.Creator Persion () {
 @Override
 public Persion createFromParcel(Parcel source) {
 Persion persion = new Persion();
 persion.name = source.readString();
 persion.age = source.readInt();
 return persion;
 @Override
 public Persion[] newArray(int size) {
 return new Persion[size];
 @Override
 public int describeContents() {
 return 0;
 @Override
 public void writeToParcel(Parcel dest, int flags) {
 dest.writeString(name);
 dest.writeInt(age);
}
在MainActivity打开ParceActivity.

 

在ManActivity传送Parcelable种类数据信息

 

 * 传送Parcelable目标
 public void parce() {
 Persion persion = new Persion();
 persion.setName( 张三 
 persion.setAge(20);
 Intent intent = new Intent(MainActivity.this, ParceActivity.class);
 intent.putExtra(PARCE, persion);
 startActivity(intent);
 }
在ParceActivity获得数据信息

 

 

  = (TextView) findViewById();
 Persion p = getIntent().getParcelableExtra(MainActivity.PARCE);
 tv.setText(p.toString());
应用的是getParcelableExtra方式,根据key获得值.

 

Intent传送Serializable目标

自定Student类完成Serializable插口

 

public class Student implements Serializable {
 private String stuName;
 private String stuClassName;
 public Student(String stuName, String stuClassName) {
 this.stuName = stuName;
 this.stuClassName = stuClassName;
 @Override
 public String toString() {
 return Student{ +
 stuName= + stuName + +
 , stuClassName= + stuClassName + +
在MainActivity打开SerActivity

 

在MainActivity传送数据信息

 

 public final static String SERCI = serci 
 * 传送Serializable目标
 public void serial() {
 Student student = new Student( 李四 , 测算机一班 
 Intent intent = new Intent(MainActivity.this, SerActivity.class);
 intent.putExtra(MainActivity.SERCI, student);
 startActivity(intent);
 }
在SerActivity获得传送的数据信息

 

 

 = (TextView) findViewById();
 Student s = (Student) getIntent().getSerializableExtra(MainActivity.SERCI);
 tv.setText(s.toString());

 

当我们们传送自定类的情况下,大家是要完成Parcelable還是完成Serializable.

 

完成Serializable插口是以便将目标转换为字节数流,能够存到当地外储存机器设备上,或是根据互联网传送,当应用此目标的情况下,能够讲此字节数流再次编码序列化作相匹配的目标.

完成Parcelable目标,其不可以将目标存到当地外储存设定上,由于parcelable是轻量的编码序列化和反编码序列化体制,所有是以内存中开展编码序列化和反编码序列华化,高效率较为高.

 

提议:

如果你的目标必须出外部储存机器设备上储存,那麼就完成Serializable插口,假如你的目标仅仅在页面中间传送,不用储存的当地外储存机器设备,還是最好完成Parcelable目标.

 

Intent传送String,Integer,CharSequence泛型结合

这儿以String种类的结合为例子,

在MainActivity中打开ListActivity

在MainActivity传送数据信息

 

 * 传送基本数据信息List结合,仅有传送String,Integer,CharSequence泛型的结合
 public void list() {
 ArrayList String stringList = new ArrayList String 
 stringList.add( abc 
 stringList.add( def 
 stringList.add( 123 
 stringList.add( 456 
 Intent intent = new Intent(MainActivity.this, ListActivity.class);
 intent.putStringArrayListExtra(MainActivity.LIST, stringList);
 startActivity(intent);
 }

 

在ListActiviy获得数据信息

 

 

 = (TextView) findViewById();
 //获得String List
 List String stringList = getIntent().getStringArrayListExtra(MainActivity.LIST);
 //拼凑结合中的String
 boolean flag = true;
 StringBuffer sb = new StringBuffer();
 sb.append( [ 
 for (String s : stringList) {
 if (flag) {
 sb.append(s);
 flag = false;
 } else {
 sb.append( , ).append(s);
 sb.append( ] 
 tv.setText(sb.toString());

 

 

Intent传送基本自定目标结合

传送自定目标的结合,自定目标务必完成Parcelable

在MainActivity中打开CustomActivity

在MainActivity传送数据信息

应用putParcelableArrayListExtra方式传送数据信息

 

 * 传送自定bean泛型结合,bean务必承继Parcelable
 public void custom() {
 ArrayList Persion pList = new ArrayList Persion 
 pList.add(new Persion( 张三 , 30));
 pList.add(new Persion( 李四 , 31));
 pList.add(new Persion( 王五 , 32));
 Intent intent = new Intent(MainActivity.this, CustomActivity.class);
 intent.putParcelableArrayListExtra(MainActivity.CUSTOM, pList);
 startActivity(intent);
 Bundle bundle = new Bundle();
 }

 

在CustomActivity获得数据信息

应用getParcelableArrayListExtra获得数据信息

 

 = (TextView) findViewById();
 //获得persionList
 List Persion persionList = getIntent().getParcelableArrayListExtra(MainActivity.CUSTOM);
 //拼凑结合中的Persion
 boolean flag = true;
 StringBuffer sb = new StringBuffer();
 sb.append( [ 
 for (Persion persion : persionList) {
 if (flag) {
 sb.append(persion.toString());
 flag = false;
 } else {
 sb.append( , ).append(persion.toString());
 sb.append( ] 
 tv.setText(sb.toString());
如何应用startActivityForResult,OnActivityResult,setResut中间的如何传送数据信息

 

在MainActivity中应用startActivityForResult开回ForResultActivity,务必要在MainActiviy中重新写过OnActivityResult方式,当ForResultActivity页面finish()掉后,会全自动的启用MainActivity中的OnActivityResult方式.

假如在ForResultActivity页面时要传送数据信息给MainAcitivity,便是用setResult方式传送,一定要确保setResult方式是在finish()以前启用的.假如不用ForResultActivity页面传送给MainActivity,也不必须应用setResult方式

当点一下回到键的情况下,页面立即finish没了,不可以确保finish以前启用setResult方式,因此要ForResultActivity中重新写过onBackPressed方式.

在MainActivity页面传送数据信息

 

public final static String FORRESULT = forresult 
 public final static int RESULT_OK=100;
 private void forResult() {
 Intent intent = new Intent(MainActivity.this, ForResultActivity.class);
 intent.putExtra(FORRESULT, for result 
// startActivity(intent);
 startActivityForResult(intent, RESULT_OK);
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 switch (requestCode) {
 case RESULT_OK:
 String str = data.getStringExtra(FORRESULT);
 Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
 break;
 }
在ForResultAcitivity传送回来数据信息

 

 

public class ForResultActivity extends ActionBarActivity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_for_result);
 //获得MainActivity传送回来的数据信息
 String forResult= getIntent().getStringExtra(MainActivity.FORRESULT);
 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
// Intent intent=new Intent();
// intent.putExtra( bb , aa 
 setResult(MainActivity.RESULT_OK,getIntent());//将MainActivity传回来的数据信息传送回来,还可以建立新的Intent传到去
 finish();
 @Override
 public void onBackPressed() {
 setResult(RESULT_OK,getIntent());//将MainActivity传回来的数据信息传送回来,还可以建立新的Intent传到去
 super.onBackPressed();

 

到此Intent传送数据信息早已详细介绍完后,在其中每一个种类只举了一个案子,实际甚么种类的,能够查询相匹配的方式,使用方法和上边详细介绍的是一样的.

 

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
无法在这个位置找到: ajaxfeedback.htm
栏目列表
推荐内容


扫描二维码分享到微信