目录
1.1 向下一个Activity传递数据
有两种方式:
方式1
在FirstActivity中用Intent封装数据,在SecondActivity中解析Intent封装的数据.
代码: FirstActivity页面  
Button button8 = (Button) findViewById(R.id.button8);
button8.setOnClickListener(new View.OnClickListener(){
            
            public void onClick(View v){
                // 使用Intent封装数据
                String data = "Hello SecondActivity";
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                intent.putExtra("data",data);
                startActivity(intent);
            }
        });
代码: SecondActivity页面
public class SecondActivity extends AppCompatActivity {
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        // 解析Intent封装的数据
        Intent intent = getIntent();
        String data = intent.getStringExtra("data");
        Toast.makeText(SecondActivity.this, data, Toast.LENGTH_SHORT).show();
    }
}
方式2
使用bundle先封装好数据,再使用Intent传递数据.
代码: FirstActivity页面  
Button button9 = (Button) findViewById(R.id.button9);
button9.setOnClickListener(new View.OnClickListener(){
            
            public void onClick(View v){
                // 使用Bundle封装数据,再把bundle封装至intent中
                String name = "测试123";
                String pwd = "测试456";
                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                //把数据封装至bundle中
                Bundle bundle = new Bundle();
                bundle.putString("name", name);
                bundle.putString("pwd", pwd);
                //把bundle封装至intent中
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
代码: SecondActivity页面
public class SecondActivity extends AppCompatActivity {
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        // 获取Intent
        Intent intent = getIntent();
        //先通过intent获取Bundle对象
        Bundle bundle = intent.getExtras();
        //再通过Bundle对象,获取数据
        String name = bundle.getString("name");
        String pwd = (String) bundle.get("pwd");
        Toast.makeText(SecondActivity.this, name+" & "+pwd, Toast.LENGTH_SHORT).show();
    }
}
1.2 返回数据给上一个Activity
Activity中还有一个 startActivityForResult() 方法也是用于启动新Activity的,
这个方法期望在新Activity销毁时能够返回一个结果给上一个Activity,但这正是我们需要的.  
- 在FirstActivity中用startActivityForResult启动新Activity - Button button10 = (Button) findViewById(R.id.button10); button10.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // startActivityForResult Intent intent = new Intent(FirstActivity.this,SecondActivity.class); startActivityForResult(intent,1); } });- startActivityForResult()方法接收2个参数,第一个参数还是Intent,第二个参数是请求码,用于在之后的回调中判断数据的来源.请求码只要是一个唯一值就可以了,这里传入了1. 
- 在SecondActivity中封装要返回的数据,并销毁当前Activity. - public class SecondActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Button button1 = (Button) findViewById(R.id.aty_s_button1); button1.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ Intent intent = new Intent(); intent.putExtra("data","Hello FirstActivity"); setResult(RESULT_OK,intent); finish(); } }); } }- setResult()方法非常重要,专门用于向上一个Activity返回数据的,setResult()接收两个参数,第一个参数用于向上一个Activity返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED这两个值,第二个参数则把带有数据的Intent传递回去,然后调用了finish()方法来销毁当前Activity. 
- 页面回到FirstActivity,调用解析SecondActivity传递过来的数据
 onActivityResult()带3个参数,第一个参数requestCode,即我们在启动新Activity时传入的请求码,第二个参数resultCode,即我们在返回数据时传入的处理结果,第三个参数data,即携带者返回数据的Intent.protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ case 1: if(resultCode == RESULT_OK){ String backData = data.getStringExtra("data"); Toast.makeText(FirstActivity.this, backData, Toast.LENGTH_SHORT).show(); } break; default: } }
由于在一个Activity中可能调用startActivityForResult()方法去启动很多不同的新Activity,每一个Activity返回的数据都会回调到onActivityResult()方法,因此我们首先通过检查requestCode的值来判断数据来源,再通过resultCode的值来判断处理结果是否成功.最后从data中取值Toast出来,这样就完成向上一个Activity返回数据的工作.