首先给大家介绍一下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中的代码:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("这是activity1"); setContentView(R.layout.layout1); //单击button2 Button btn1 = (Button) findViewById(R.id.btn1); btn2.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { Intent intent1 = new Intent(MainActivity.this, Activity3.class); intent1.putExtra("activity1", "数据来自activity1"); startActivityForResult(intent1, REQUEST_CODE); } }); }

成时调用onActivityResult方法

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == REQUEST_CODE){ if(resultCode == RESULT_CANCELED){ setTitle("取消"); }else if(resultCode == RESULT_OK){ System.out.println("这里已经执行..."); String txt = ""; Bundle extras = data.getExtras(); if(extras != null){ txt = extras.getString("store"); } setTitle("这里是Activity1:" + txt); } } }

这是Activity2中的代码:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setTitle("这是activity2");setContentView(R.layout.layout2);Bundle bundle = getIntent().getExtras();if(bundle != null){setTitle("这里是Activity2:" + bundle.getString("activity1"));}Button btn = (Button) findViewById(R.id.btn2);btn.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {Bundle bundle = new Bundle();bundle.putString("store", "这是Activity2中传递过来的数据");Intent mIntent = new Intent();mIntent.putExtras(bundle);setResult(RESULT_OK, mIntent);finish();}});}

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

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

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

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

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

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

参数传递:Activity和Activity之间的参数传递是通过Bundle的键值对来传递,Bundle是对HashMap的重新封装,但是Bundle只能

存放基本类型,比如:String/int/byte/boolean/char等。


更多相关文章

  1. C语言函数的递归(上)
  2. Android系统启动顺序(按下power键后所做的的工作)
  3. 美团外卖Android(安卓)Lint代码检查实践
  4. 老项目代码从Eclipse迁移到AndroidStudio
  5. Android对象序列化(Activity之间传递对象,Parcelable小例子)
  6. android中显示网络图片
  7. Android(安卓)Studio使用lambda
  8. android入门:zxing学习笔记(一)
  9. Android数据存储方式(二)SharedPreferences(偏好参数保存)

随机推荐

  1. Android 开发者的 Flutter(二) —— Flutte
  2. android 简单实现,微信第三方登录
  3. android EditText输入限制,只输入数字电话
  4. 认识Android中的MVP设计模式
  5. Android 显示意图和隐式意图的区别
  6. Android 样式系统 | 主题背景和样式
  7. 【Android(安卓)开发教程】TableLayout表
  8. Android属性动画——实现灵动菜单效果
  9. Android(安卓)Ant 编译
  10. Android(安卓)studio项目配置的.gitignor