Android Activity之间的数据传递

一、向目标Activity传递数据:微信

1 Intent intent=new Intent(this,Main2Activity.class);
2         //可传递多种类型的数据
3         intent.putExtra("name","张三");
4         intent.putExtra("age",12);
5         startActivity(intent);

 

二、在目标Activity中取出数据ide

1  Intent intent=getIntent();
2         //用getXxxExtra()取出对应类型的数据。取出String只须要指定key
3         String name=intent.getStringExtra("name");
4         //取出int要指定key,还要设置默认值,当intent中没有该key对应的value时,返回设置的默认值
5         int age=intent.getIntExtra("age",0);

 

 

 

 

 

目标Activity销毁时,能够回传数据给上一个Activity:this

一、启动目标Activity,并设置一个请求码标识当前Activity图片

1 Intent intent=new Intent(this,Main2Activity.class);
2         //startActivityForResult()方法能够启动一个Activity,并能够设置一个int型的请求码标识当前Activity
3         startActivityForResult(intent,1);

 

二、在目标Activity中回传数据get

复制代码

1 //回传数据用得Intent能够新建,也能够用getIntent()
2         Intent intent=new Intent();
3         //设置要回传的数据
4         intent.putExtra("name","张三");
5         intent.putExtra("age",18);
6         //设置结果码标识当前Activity,回传数据。无论多早调用这句代码,这句代码在当前Activity销毁时才会执行,即此Activity销毁时才会回传数据。请求码和结果码没必要相同。
7         setResult(1,intent);

复制代码

回传时会把请求码、结果码、Intent数据封装为一个总体回传,请求码+结果码惟一标识回传的Intentit

 

三、在上一级Activity中取出回传的数据class

上一级Activity使用   startActivityForResult()  开启目标Activity后,当目标Activity销毁时,会向上一级Activity回传数据,并回调上一级  Activity的   onActivityResult()   方法。request

咱们须要重写上一级Activity的   onActivityResult()   方法获取回传数据。请求

复制代码

1  //重写上一级Activity的onActivityResult()方法来获取目标Activity回传的数据
 2     //三个形参,请求码、结果码、目标Activity回传的Intent
 3     @Override
 4     protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
 5         //调用基类的方法,此句代码会自动生成
 6         super.onActivityResult(requestCode, resultCode, data);
 7         if(requestCode==1){   //若是请求码是当前Activity的
 8             if(resultCode==1){    //若是结果码是某个目标Activity的,就取出对应的数据。这个判断主要是可能有多个目标Activity向当前Activity回传数据,这些Intent数据中可能具备相同的key
 9                 String name=data.getStringExtra("name");
10                 int age=data.getIntExtra("age",0);
11             }
12         }
13     }

复制代码

 

如过上一级Activity开启了多个目标Activity,回传数据时都是回调onActivityResult()方法,因此经常要根据结果码区分是哪一个目标Activity回传的数据。若是只开启了一个目标Activity,则没必要判断。方法

 

数据回传很经常使用,好比发微信朋友圈时,进入相册选择好图片后,会回传选择的图片的信息。

相关文章
相关标签/搜索