android Intent的startActivityForResult()方法
2014-05-05 00:15
393 查看
startActivityForResult()
之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.Activity跳转到B.Activity,在A.Activity中要自动获取到B.Activity返回的数据。
1.介绍几个主要的方法:
第一个参数intent1就不介绍了,第二个参数的值必须要大于等于0,你可以自己设定数值,该值是用来标记你要跳转并返回值的Activity。比如这里我设定的是以就是说明A.Activity跳转到B.Activity的标记为1,若A.Activity跳转到C.Activity
那就不能再设定为1了,可以写除了1意外的所有正整数。
2.onActivityResult(int requestCode, int resultCode, Intent data) 这个方法是返回主activity自动执行的
这个方法就是用来处理从哪张Activity返回的,并处理返回来数据。
这里的1就对应到onActivityResult()方法中的resultCode
intent1 对应onActivityResult()方法中的data, 也就是要返回主Activity所需要处理的Intent
TwoActivity.java
对应的XML文件就不贴出来了,子页面就一个EditText 和 Button
之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.Activity跳转到B.Activity,在A.Activity中要自动获取到B.Activity返回的数据。
1.介绍几个主要的方法:
MainActivity.this.startActivityForResult(intent1, 1);
第一个参数intent1就不介绍了,第二个参数的值必须要大于等于0,你可以自己设定数值,该值是用来标记你要跳转并返回值的Activity。比如这里我设定的是以就是说明A.Activity跳转到B.Activity的标记为1,若A.Activity跳转到C.Activity
那就不能再设定为1了,可以写除了1意外的所有正整数。
2.onActivityResult(int requestCode, int resultCode, Intent data) 这个方法是返回主activity自动执行的
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1: Toast.makeText(MainActivity.this, "这是从第一个activity返回的数据---->>" + data.getStringExtra("text"), Toast.LENGTH_LONG).show(); break; case 2: Toast.makeText(MainActivity.this, "这是从第二个activity返回的数据---->>" + data.getStringExtra("text"), Toast.LENGTH_LONG).show(); break; } }
这个方法就是用来处理从哪张Activity返回的,并处理返回来数据。
requestCode:就是之前在主界面的.startActivityForResult的第二个参数值,通过判断requestCode就可以知道是哪张页面返回回来的 resultCode: 根据它来判断返回页面所需要的不同操作 Intent : 就是从子页面返回回来的Intent 3.setResult(resultCode, data)
setResult(1, intent1)
这里的1就对应到onActivityResult()方法中的resultCode
intent1 对应onActivityResult()方法中的data, 也就是要返回主Activity所需要处理的Intent
4.主要的方法介绍完以后就介绍下源代码: MainActivity:
private EditText edit; private Button submit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_two); edit = (EditText) findViewById(R.id.editTwo); submit = (Button) findViewById(R.id.btnSubmitTwo); submit.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { Intent intent1 = new Intent(); intent1.putExtra("text", edit.getText().toString().trim()); TwoActivity.this.setResult(2, intent1); TwoActivity.this.finish(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.two, menu); return true; } }
TwoActivity.java
对应的XML文件就不贴出来了,子页面就一个EditText 和 Button
源码下载:源码
相关文章推荐
- 分析Activity的View绑定过程
- Android数据储存——SharedPreferences储存
- Android数据储存
- AsyncTask简单入门
- Android数据储存——文件储存
- Android数据储存——Sqlite
- Android上的内存监测
- Android 资源文件介绍
- Android深入浅出系列之实例应用—如何在一个Activity里调用另外一个Activity?
- Android官方下拉刷新控件 SwipeRefreshLayout
- Android studio中文乱码
- Android Studio系列教程
- android跳转之短信浏览器拨打电话界面
- Android开源客户端之LookAround学习(三) 界面框架
- android手机应用开发(一)
- Android Input设备debug 查看底层时间上报和对应的设备技巧
- 【转】【Android】开源项目汇总-备用
- 使用Vitamio打造自己的Android万能播放器(11)—— 本地扫描后台服务
- [重要]使用Vitamio打造自己的Android万能播放器(10)—— 本地播放 (缩略图、视频信息、视频扫描服务)
- Android所有Dialog对话框大合集