Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,通过 Activity. startActivity(intent) 启动另外一个 Activity ,Intent当作目的地址,Bundle当作所携带的内容。

intent直接跳转启动到新Activity,也可以带参数。

 btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//第1中方式.打开新的Activity,不传递参数                //新建一个显式意图,第一个参数为当前Activity类对象,第二个参数为你要打开的Activity类//Intent intent1=new Intent(MainActivity.this,StartActivityForResultActivity.class);//startActivity(intent1);//第2中方式.打开新的Activity,并传递若干个参数给它      //Intent当作目的地址,Bundle当作所携带的内容      Intent intent2=new Intent(MainActivity.this,StartActivityForResultActivity.class);      Bundle bundle=new Bundle();      bundle.putBoolean("boolean_key", false);      bundle.putString("String_key", "apple");      bundle.putDouble("Double_key", 6.66);      bundle.putInt("int_key", 20);      intent2.putExtra("all_key", bundle);              startActivity(intent2);}});

在启动新的Activity中,取传过来的数值。

Intent intent = getIntent();Bundle bunble = intent.getBundleExtra("all_key");boolean booleanValue = bunble.getBoolean("");double doubleValue = bunble.getDouble("Double_key");String stringValue = bunble.getString("String_key");int intValue = bunble.getInt("int_key");Log.i("info", "booleanValue"+booleanValue);Log.i("info", "doubleValue"+doubleValue);Log.i("info", "stringValue"+stringValue);Log.i("info", "intValue"+intValue);

打印结果:



通过startActivityForResult(intent, REQUSET)传值启动Activity并返回结果:

1.创建Intent对象。

2.启动指定Activity并等待返回结果,其实请求码是用来标志该请求startActivityForResult(intent, REQUSET)。

3.重新onActivityResult(int requestCode, int resultCode, Intent data)接收指定Activity返回的结果。

在指定Activity中:

1.获取Intent的对象intent。

2.通过intent添加参数,或用Bundle包装需要返回的数据并put入intnet中。

3.设置该Activity的结果码,并设置结束之后要返回的Activity: setResult(RESULT_OK, intent)。

4.finish()掉该Activity。

                   

              图a                                                图b                                                           图c

图a中在StartActivityForResultActivity界面启动--->进入图b,在SetResultActivity界面,输入数值----又返回StartActivityForResultActivity界面,拿到返回的数值,进行显示。

示例代码

StartActivityForResultActivity:

 btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent=new Intent(StartActivityForResultActivity.this,SetResultActivity.class);//发送意图标  REQUSET=1用来标志请求一般设置int就行startActivityForResult(intent, REQUSET);}});

onActivityResult方法中结束下面代码传过来的数据。

若有多个返回请求code,就在下面采用switch分支语句接受不同的请求码,来进行相应的出来

protected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data); //requestCode标示请求的标示   resultCode表示有数据  if(requestCode==StartActivityForResultActivity.REQUSET&&resultCode==RESULT_OK){String value = data.getStringExtra("key_info");tv.setText("返回值:"+value);Log.i("info", "requestCode="+requestCode+";"+"resultCode="+resultCode);//finish();} Toast.makeText(                  this,                  "requestCode=" + requestCode + ":" + "resultCode=" + resultCode,                  Toast.LENGTH_LONG).show();  }

SetResultActivity:

btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub Intent intent=new Intent();  intent.putExtra("key_info", et.getText().toString());  setResult(RESULT_OK, intent); finish();}});


示例代码


更多相关文章

  1. [置顶] Android必须知道的框架-NoHttp
  2. android 实现服务器连接获取数据和传递数据(1)
  3. 使用Tensorflow部署手机端app之将TensorFlow训练好的模型迁移到A
  4. Android之app作为服务器解决跨域问题
  5. Android(安卓)P: U盘挂载过程简述
  6. Android(安卓)Animation之ScaleAnimation用法详解
  7. Android(安卓)OKHTTP3.4版本封装
  8. Android数据存储之SQLite数据库存储
  9. Android(安卓)简单通用的基类

随机推荐

  1. Android(安卓)Application 之 allowBacku
  2. android 开发常用网站
  3. android web
  4. Android(安卓)8.0 权限警告(not in privap
  5. android toolchain is using Thread mode
  6. Android(安卓)禁用 APP 或四大组件
  7. Android学习网站
  8. Android:Android.bat批处理命令
  9. androidannotations 在android studio中
  10. Android利用tcpdump抓包