Intent意图 可用于Activity之间的数据传递,一般可分为下面两种情况,从当前Activity传递到目标Activity后有无返回值:
创新互联专业为企业提供开化网站建设、开化做网站、开化网站设计、开化网站制作等企业网站建设、网页设计与制作、开化企业网站模板建站服务,十多年开化做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
1.传递后无返回值的情况:
在起始Activity中,发送数据 protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.thisactivity); Intent intent = new Intent(); //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity intent.setClass(ThisActivity.this,TargetActivity.class); //绑定数据 intent.putExtra("username",username);//也可以绑定数组 intent.putExtra("userpass",userpass); //打开目标Activity startActivity(intent); } 在目标Activity中,接收数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.targetactivity); //获得意图 Intent intent = getIntent(); //读取数据 String name = intent.getStringExtra("username"); String pass = intent.getStringExtra("userpass); } 也可以适用Bundle(捆) 在起始Activity中,发送数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.thisactivity); Intent intent = new Intent(); //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity intent.setClass(ThisActivity.this,TargetActivity.class); //一次绑定多个数据 Bundle bundle = new Bundle(); bundle.putString("username",username); bundle.putString("userpass",userpass); intent.putExtras(bundle); //打开目标Activity startActivity(intent); } 在目标Activity中,接收数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.targetactivity); //获得意图 Intent intent = getIntent(); //读取数据 Bundle bundle = intent.getExtras(); String name = bundle.getString("username"); String pass = bundle.getString("userpass"); }
2.传递后有返回值的情况:
当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,也可以使用startActivityForResult (Intent intent, int requestCode);方法。
在起始Activity中,发送数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.thisactivity); Intent intent = new Intent(); //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity intent.setClass(ThisActivity.this,TargetActivity.class); //绑定数据 intent.putExtra("username",username);//也可以绑定数组 intent.putExtra("userpass",userpass); //打开目标Activity startActivityForResult(intent,1); } //需要重写onActivityResult方法 protected void onActivityResult(int requestCode, int resultCode, Intent intent){ super.onActivityResult(requestCode,resultCode,intent); //判断结果码是否与回传的结果码相同 if(resultCode == 1){ //获取回传数据 String name = intent.getStringExtra("name"); String pass = intent.getStringExtra("pass); //对数据进行操作 ...... } 在目标Activity中,接收数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.targetactivity); //获得意图 Intent intent = getIntent(); //读取数据 String name = intent.getStringExtra("username"); String pass = intent.getStringExtra("userpass); //从EditText中获取新的数据给name和pass name = editText1.getText().toString(); pass = editText2.getText().toString() //数据发生改变,需要把改变后的值传递回原来的Activity intent.putExtra("name",name); intent.putExtra("pass",pass); //setResult(int resultCode,Intent intent)方法 setResult(1,intent); //销毁此Activity,摧毁此Activity后将自动回到上一个Activity finish(); }