02-startActivityForResult及Intent数据传递

Posted toly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02-startActivityForResult及Intent数据传递相关的知识,希望对你有一定的参考价值。

通过点击按钮,跳转到A02_Target,在A02_Target通过按钮或返回键返回,将数据传递回去
 
A02_ForResult
 1 package top.toly.unitcommon.activity.item2;
 2 import android.content.Intent;
 3 import android.os.Bundle;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.widget.Button;
 6 import android.widget.TextView;
 7 import butterknife.Bind;
 8 import butterknife.ButterKnife;
 9 import butterknife.OnClick;
10 import top.toly.unitcommon.R;
11 import top.toly.www.zlibrary.bean.Person;
12 
13 public class A02_ForResult extends AppCompatActivity {
14 
15     private static final int DATA_CODE = 0x0001;
16 
17     @Bind(R.id.btn_for_result)
18     Button mBtnForResult;
19     @Bind(R.id.tv_result)
20     TextView mTvResult;
21 
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.a02_for_result);
26         ButterKnife.bind(this);
27     }
28 
29     @OnClick(R.id.btn_for_result)
30     public void onViewClicked() {
31         startActivityForResult(new Intent(this, A02_Target.class), DATA_CODE);
32     }
33 
34     @Override
35     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
36 
37         switch (requestCode) {
38             case DATA_CODE:
39                 if (resultCode == RESULT_OK) {
40                     String dataFormTarget = data.getStringExtra("data");
41 
42                     Bundle personData = data.getBundleExtra("personData");
43                     Person person = (Person) personData.get("person");
44                     mTvResult.setText("dataFormTarget:" + dataFormTarget
45                             + "\nperson:" + person.toString());
46                 }
47                 break;
48         }
49     }
50 }
A02_Target
 1 package top.toly.unitcommon.activity.item2;
 2 
 3 import android.content.Intent;
 4 import android.os.Bundle;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.widget.Button;
 7 
 8 import butterknife.Bind;
 9 import butterknife.ButterKnife;
10 import butterknife.OnClick;
11 import top.toly.unitcommon.R;
12 import top.toly.www.zlibrary.bean.Person;
13 
14 public class A02_Target extends AppCompatActivity {
15 
16     @Bind(R.id.btn_send)
17     Button mBtnSend;
18 
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.a02_target);
23         ButterKnife.bind(this);
24 
25     }
26 
27     @OnClick(R.id.btn_send)
28     public void onViewClicked() {
29         backWithData();
30         finish();
31     }
32 
33     private void backWithData() {
34         Person jt = new Person("捷特", 24);
35 
36         Intent intent = new Intent();
37         intent.putExtra("data", "我是A02_Target的数据");
38 
39         Bundle bundle = new Bundle();
40         bundle.putSerializable("person", jt);
41         intent.putExtra("personData", bundle);
42         setResult(RESULT_OK, intent);
43     }
44 
45     /**
46      * 重写返回键
47      */
48     @Override
49     public void onBackPressed() {
50         backWithData();
51         super.onBackPressed();
52 
53     }
54 }

person 要用intent传递对象,可以让person实现Serializable

 1 package top.toly.www.zlibrary.bean;
 2 
 3 import java.io.Serializable;
 4 
 5 /**
 6  * 作者:张风捷特烈
 7  * 时间:2018/4/26:12:13
 8  * 邮箱:[email protected]
 9  * 说明:
10  */
11 public class Person implements Serializable {
12 
13     private String name;
14     private int age;
15 
16     public Person(String name, int age) {
17         this.name = name;
18         this.age = age;
19     }
20 
21     public String getName() {
22         return name;
23     }
24 
25     public void setName(String name) {
26         this.name = name;
27     }
28 
29     public int getAge() {
30         return age;
31     }
32 
33     public void setAge(int age) {
34         this.age = age;
35     }
36 
37     @Override
38     public String toString() {
39         return "Person{" +
40                 "name=‘" + name + ‘\‘‘ +
41                 ", age=" + age +
42                 ‘}‘;
43     }
44 }

 

以上是关于02-startActivityForResult及Intent数据传递的主要内容,如果未能解决你的问题,请参考以下文章