android的Activity之间的数据传递

首先给你们介绍一下android中的activity:java

一个activity通常表明手机屏幕的一屏,概念至关与网页。通常来讲一个android应用是由一个或多个activity组成,activity直接可进行跳转,直接也能够经过回调方法传递参数。android

activity之间的参数传递:ide

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

这是Activity1中的代码:this

@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); } }); } spa

成时调用onActivityResult方法code

@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); } } }orm

 这是Activity2中的代码:get

@Override protected 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() { @Override public 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等。