Android登录回调传值,Android基础之intent传值的三种方法

0 概述:Android之intent传值的三种方法

0.1 startActivity();

0.2 startActivityForResult();

0.3 调用在下个activity自定义的方法”actionStart()”,也就是最佳的方法。

1.1 MainActivity

/* 在MainActivity中定义如下代码 */button1.setOnClickListener(newOnClickListener() {@OverridepublicvoidonClick(View v) { Intent intent =newIntent(MainActivity.this,TwoActivity.class);//在Intent对象当中添加一个键值对intent.putExtra("key","value"); startActivity(intent); }});

1.2 TwoActivity

/* 在TwoActivity中定义如下代码 */publicclassTwoActivityextendsActivity{@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {        button2.setOnClickListener(newOnClickListener() {@OverridepublicvoidonClick(View v) {//取得从上一个Activity当中传递过来的Intent对象Intent intent = getIntent();//从Intent当中根据key取得valueif(intent !=null) {                    String value = intent.getStringExtra("key");                }            }        });    }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

2.1 MainActivity

button1.setOnClickListener(newOnClickListener() {@OverridepublicvoidonClick(View v) {            Intent intent =newIntent(MainActivity.this,TwoActivity.class);            intent.putExtra("key","value");// 第二个参数是请求码,只要是一个唯一值startActivityForResult(intent,1234);    }});// 由于我们是使用startActivityForResult()方法来启动TwoActivity的,在TwoActivity被销毁之后会回调上一个活动的onActivityResult()方法@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode, Intent intent) {switch(requestCode) {case1234:if(resultCode == RESULT_OK) {//接收对象//Bundle bundle = data.getExtras();//AddressBean addressBean = (AddressBean) bundle.getSerializable(Constant.ADDRESSBEAN);String returnedData = intent.getStringExtra("key1");                }break;default:        }    }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

2.2 TwoActivity

publicclassTwoActivityextendsActivity{@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//接收从MainaActivity传递的数据Intent intent = getIntent();if(intent !=null) {            String value = intent.getStringExtra("key");        }        button2.setOnClickListener(newOnClickListener() {@OverridepublicvoidonClick(View v) {//传递对象//Intent intent = new Intent();//Bundle bundle = new Bundle();//bundle.putSerializable(Constant.ADDRESSBEAN, addressArray.get(position));//intent.putExtras(bundle);//setResult(RESULT_OK, intent);//finish();Intent intent =newIntent();                intent.putExtra("key1","value two activity");// 专门用于向上一个活动返回数据。第一个参数用于向上一个活动返回结果码,一般只使用RESULT_OK或RESULT_CANCELED这两个值setResult(RESULT_OK, intent);                finish();            }        });    }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

3.0 问题描述

在真正的项目开发中经常会有对接的问题出现。如:TwoActivity并不是由你开发的,但现在你负责的部分需要有启动TwoActivity这个功能,而你却不清楚启动这个活动需要传递哪些数据。

3.1 MainActivity

button1.setOnClickListener(newOnClickListener() {@OverridepublicvoidonClick(View v) {/*最佳数据传值方法:调用在下个activity自定义的方法*/TwoActivity.actionStart(MainActivity.this,"data1","data2");    }});

1

2

3

4

5

6

7

8

9

3.2 TwoActivity

publicclassTwoActivityextendsActivity{@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);    }/*最佳数据传值方法*/publicstaticvoidactionStart(Context context, String data1, String data2) {        Intent intent =newIntent(context, TwoActivity.class);        intent.putExtra("param1", data1);        intent.putExtra("param2", data2);        context.startActivity(intent);    }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

3.3 结论

实现后,所有TwoActivity中需要的数据都是通过actionStart()方法的参数传递过来的,然后把它们存储到Intent中,最后调用startActivity()方法启动TwoActivity。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值