展会信息港展会大全

android的Activity之间的数据传递
来源:互联网   发布日期:2016-01-14 11:04:25   浏览:1657次  

导读:首先给大家介绍一下android中的activity:一个activity一般代表手机屏幕的一屏,概念相当与网页。一般来说一个android应用是由一个或多个activity组成,a...

首先给大家介绍一下android中的activity:

一个activity一般代表手机屏幕的一屏,概念相当与网页。一般来说一个android应用是由一个或多个activity组成,activity直接可进行跳转,直接也可以通过回调方法传递参数。

activity之间的参数传递:

首先我们新建两个按钮,分别在layout1,layout2中,按钮的id为btn1,btn2,然后在分别建立两个activity分别为Activity1,Activity2。Activity1分别和layout1关联,Activity2分别和layout2关联,我们接下来要做的事情就是在Activity1中把参数传递到Activity2中,然后在Activity2运行完成的时候并返回到Activity1的时候,Activity1再从获取Activity2中参数。

这是Activity1中的代码:

view sourceprint?01 <P><SPAN> @Override

02public void onCreate(Bundle savedInstanceState) {

03super.onCreate(savedInstanceState);

04setTitle("这是activity1");

05setContentView(R.layout.layout1);

06

07//单击button2

08Button btn1 = (Button) findViewById(R.id.btn1);

09btn2.setOnClickListener(new Button.OnClickListener() {

10@Override

11public void onClick(View v) {

12Intent intent1 = new Intent(MainActivity.this, Activity3.class);

13intent1.putExtra("activity1", "数据来自activity1");

14startActivityForResult(intent1, REQUEST_CODE);

15}

16});

17} </SPAN></P>

18 <P>成时调用onActivityResult方法</P>

19 <P><SPAN>@Override

20protected void onActivityResult(int requestCode, int resultCode, Intent data) {

21if(requestCode == REQUEST_CODE){

22if(resultCode == RESULT_CANCELED){

23setTitle("取消");

24}else if(resultCode == RESULT_OK){

25System.out.println("这里已经执行...");

26String txt = "";

27Bundle extras = data.getExtras();

28if(extras != null){

29txt = extras.getString("store");

30}

31setTitle("这里是</SPAN><SPAN style="FONT-SIZE: 13px; LINE-HEIGHT: 19px; FONT-FAMILY: 'sans serif', tahoma, verdana, helvetica; WHITE-SPACE: normal; BACKGROUND-COLOR: #ffffff">Activity1</SPAN><SPAN>:" + txt);

32}

33}

34}</SPAN></P>

这是Activity2中的代码:

view sourceprint?01 <SPAN>@Override

02protected void onCreate(Bundle savedInstanceState) {

03super.onCreate(savedInstanceState);

04setTitle("这是activity2");

05setContentView(R.layout.layout2);

06Bundle bundle = getIntent().getExtras();

07if(bundle != null){

08setTitle("这里是Activity2:" + bundle.getString("</SPAN><SPAN style="LINE-HEIGHT: 19px">activity1</SPAN>"));<SPAN>}

09

10Button btn = (Button) findViewById(R.id.btn2);

11btn.setOnClickListener(new Button.OnClickListener() {

12@Override

13public void onClick(View v) {

14Bundle bundle = new Bundle();

15bundle.putString("store", "这是Activity2中传递过来的数据");

16Intent mIntent = new Intent();

17mIntent.putExtras(bundle);

18setResult(RESULT_OK, mIntent);

19finish();

20}

21});

22}</SPAN>

首先解释一下startActivity()和startActivityForResult()这两种方法的不同:前者是启动一个新的Activity,当新的Activity执行完成后不会执行回调函数,

当然也不会有任何的返回值;后者也是启动一个新的Activity,并且当新的Activity运行结束的时候,还必须执行旧的Activity里面的

回调函数,这个回调函数叫做onActivityResult(),其中startActivityForResult()里面有两个参数,第一个参数是你声明的

Intent,第二个参数是请求码,如果请求码大于0的时候,当新的Activity结束的时候,这个请求码返回到onActivityResult(),

然后通过不同的请求码在回调函数onActivityResult()中针对不同的返回值执行不同的代码操作。其中onActivityReuslt()这也是

一个回调函数,当新的Activity执行完成后,还必须执行旧的Activity的这个回调函数。

作者“缘叙的博客”

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港