设为首页 加入收藏

TOP

Android入门学习—Activity之间数据传递之Intent数据传递(一)
2015-07-16 12:57:34 来源: 作者: 【 】 浏览:14
Tags:Android 入门 学习 Activity 之间 数据 传递 Intent

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().

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python函数参数类型小结 下一篇Qt下应用QTcpServer与QTcpSocket..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: