从当前页面传递数据到第二个页面:
页面1:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View view) { //当点了按钮的时候执行这个方法 /** * 跳转页面 * 参数一 : 上下文对象 表示的是 当前的上下文环境 * 参数二 : 目标Activity的类对象 */ Intent intent = new Intent(this, SecondActivity.class); /** * Intent 可以传递的数据类型 * 8中基本数据类型 以及他们的数组 * String String数组 * 序列化对象 * String类型的 ArrayList * * Bundle 一个数据的封装对象 * */ // 将要传递的数据添加到Intent 中 intent.putExtra("name","王世兴"); intent.putExtra("isSingle",false); intent.putExtra("age",21); intent.putExtra("sex","男"); //传递自定义对象的时候需要 序列化 实现 implements Serializable Person zhanglei = new Person("张磊",20,"女"); intent.putExtra("person",zhanglei); // 传递一个String 类型的 List ArrayList<String> list = new ArrayList<>(); list.add("呵呵"); list.add("呵呵"); list.add("呵呵"); list.add("呵呵"); intent.putExtra("list",list); //传递一个Bundle 对象 这个对象允许被 Intent 传递 Bundle bundle = new Bundle(); bundle.putBoolean("isbundle",true); intent.putExtra("bundle",bundle); //启动跳转 startActivity(intent); } }
页面2:
public class SecondActivity extends AppCompatActivity { private TextView showTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); // 获取传递数据过来的 Intent Intent intent = getIntent(); //获取 载体中的 对象数据 参数是 存入数据时候的 key String name = intent.getStringExtra("name"); String sex = intent.getStringExtra("sex"); boolean isSingle = intent.getBooleanExtra("isSingle", false); int age = intent.getIntExtra("age", 0); //获取序列化的自定义对象需要强制类型转换成为 相应的类型 Person person = (Person) intent.getSerializableExtra("person"); //获取 String类型的 List ArrayList<String> list = intent.getStringArrayListExtra("list"); //获取Bundle 对象 Bundle bundle = intent.getBundleExtra("bundle"); boolean isBundle = bundle.getBoolean("isBundle"); showTv = (TextView) findViewById(R.id.show_tv); showTv.setText(name + "\n" + sex + "\n" + age + "\n" + isSingle + "\n" + person.toString() + "\n" + list.toString()+"\n"+isBundle); } }
回传值:
页面1:
public class MainActivity extends AppCompatActivity { private TextView showTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showTv = (TextView) findViewById(R.id.show_tv); } public void onClick(View view) { //点击跳转到 第二个页面 Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("info", "把数据给我"); //为了一个结果而跳转页面 startActivityForResult(intent, 1000); } /** * 接收回传值的方法 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1000 && resultCode == 1001) { // 当满足了 请求和结果码的 判断的时候 获取Intent中的数据 String info = data.getStringExtra("info"); String dream = data.getStringExtra("dream"); boolean isSingle = data.getBooleanExtra("isSingle", false); showTv.setText(info+"\n"+dream+"\n"+isSingle); } } }
页面2:
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Intent intent = getIntent(); //获取传递过来的数据 String info = intent.getStringExtra("info"); //将传递过来的数据 Toast 吐司展示出来 Toast.makeText(this, info, Toast.LENGTH_SHORT).show(); } public void onClick(View view) { // 点击销毁当前页面 Intent intent = new Intent(); intent.putExtra("info", "你想要啥我都给你"); intent.putExtra("isSingle", true); intent.putExtra("dream", "我想要个iPad"); //设置传递到 回去的 Activity的结果 setResult(1001, intent); // 结束 销毁当前的Activity finish(); } /** * 了解 * 如何知道自己按了返回键 * 该方法 可以监听 手机上的 所有按键 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // KEYCODE_BACK表示 返回键 if (keyCode == KeyEvent.KEYCODE_BACK){ Intent intent = new Intent(); intent.putExtra("info", "你想要啥我都给你"); intent.putExtra("isSingle", true); intent.putExtra("dream", "我想要个iPad"); //设置传递到 回去的 Activity的结果 setResult(1001, intent); //这个方法 应该不用加 finish(); //一定要 返回true 表示 直接在这个地方 消费掉这个按钮事件 return true; } return super.onKeyDown(keyCode, event); } }