最基本的Activity传值:
第一个Activity主要代码:
Intent i = new Intent(MainActivity.this, TheAty.class);
//i.putExtra("data","欢迎来到zzu");
// Bundle b = new Bundle();
// b.putString("name","zzu");
// b.putInt("age",20);
// i.putExtras(b);
i.putExtra("user",new User("zzu",19));
// startActivity(i);
startActivityForResult(i,0);
部分解释:
1、startActivity( )
startActivity( ) 仅仅是启动另一个Activity,他不会自定回转到原来的Activity,若是想跳回原来的页面,则必须再使用一次startActivity( )来启动原来的Activity。
2、startActivityForResult( )
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从FirstActivity跳转到SecondActivity,当这个SecondActivity执行完finish()方法后,程序会自动回调FirstActivity的onActivityResult(int requestCode, int resultCode, Intent intent)方法。
从中我们可以看出第一步要创建Intent,其次把数据放入Intent中,接着运行start即可。
第二个Activity主要代码:
Intent i = getIntent();
//User user = (User)i.getSerializableExtra("user");
User user = (User)i.getParcelableExtra("user");
//Bundle data = i.getExtras();
//tv.setText(i.getStringExtra("data"));
// tv.setText(String.format("name=%s,age=%d,name1=%s",
// data.getString("name"),data.getInt("age"),data.getString("name1","liu")));
tv.setText(String.format("User info(name=%s,age=%d)",user.getName(),user.getAge()));
第二部分呢,主要是获取Intent,然后i.get到你需要的值,也就是你put到里边的值,最后用textView显示即可。
从Activity中获取数据:
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent();//第一步创建Intent i.putExtra("data",editText.getText().toString());//第二步把值放入intent setResult(1,i);//设置返回结果 finish();//完成,关闭当前Activity } });
获取result的activity部分代码
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); textView.setText("另一个Activity返回的数据是:"+data.getStringExtra("data"));//data为传过来的Intent }