startActivityForResult的简单使用
2013-11-22 17:19
435 查看
有没有遇见过一个页面点击后进入下一个页面,然后在下一个,再下一个。到最后的时候返回上一个界面,但上一个界面已经被finish了,以前就索性把这个界面的初始传到下一个界面,返回时,再重新传入。这样做虽然可以恢复上一个页面的数据,但并不符合我们的要求。使用startActivityForResult,前一个Activity便会有一个等待后一个Activity的返回,根据返回的数据进行下一步操作,而不影响前一个Activity(如用户当前输入等)
![](https://img-blog.csdn.net/20131122171802875?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVhdHNf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
实现过程:
1、在Intent中设置要跳转到的Activity,并通过Bundle把需要处理的数据放到Intent中
2、将startActivity(intent)跳转改成使用startActivityForResult(intent, 1);跳转,并重写onActivityResult(int requestCode, int resultCode, Intent data)方法
小注:
a、startActivityForResult(intent, 1)方法中的1是下一个Activity要返回值的依据,这个值必须要大于0,否则Activity中的onActivityResult不会响应
b、onActivityResult方法是用来处理并接收次Activity返回的数据,接收后可更新ui
注:1、一个主Activity中可跳转到多个次Activity,做对应处理时,在次Activity的setResult(1,intent)中设置好标识符(这里设置为1),然后在主Activity中的onActivityResult方法中根据resultCode做相应的处理
2、项目中出现问题,报错“WARN/ActivityManager(67):
Activity is launching as a new task, so cancelling activity result.”,解决:原来是把次Activity的launchmode设置成了singleTask,去掉次Activity的launchmode就可以了
源码:定义了4个Activity,主activity跳转到其他2个时附带String good,第二个在接收到数据后将String +"boy"后返回给主Activity并Toast;第三个在接收到数据后将String +"boy&girl"后返回给主Activity并Toast。第4个采用intent跳转+finish当前Activity的方式进行Activity之间的跳转
http://download.csdn.net/detail/u012895758/6594781
实现过程:
1、在Intent中设置要跳转到的Activity,并通过Bundle把需要处理的数据放到Intent中
intent.setClass(MainActivity.this, OtherActivity.class); bundle = new Bundle(); bundle.putString("Test", "good"); intent.putExtras(bundle); startActivityForResult(intent, 1);
2、将startActivity(intent)跳转改成使用startActivityForResult(intent, 1);跳转,并重写onActivityResult(int requestCode, int resultCode, Intent data)方法
小注:
a、startActivityForResult(intent, 1)方法中的1是下一个Activity要返回值的依据,这个值必须要大于0,否则Activity中的onActivityResult不会响应
b、onActivityResult方法是用来处理并接收次Activity返回的数据,接收后可更新ui
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (resultCode) { case 1: Toast.makeText(MainActivity.this, data.getExtras().getString("Test").toString(), 2000).show(); break; case 2: Toast.makeText(MainActivity.this, data.getExtras().getString("Test").toString(), 2000).show(); break; } }3、在次Activity中接收并处理消息,然后将处理的消息通过bundle绑定intent的方式返回给第一个Activity
Intent intent = OtherActivity.this.getIntent(); Bundle bundle = intent.getExtras(); intent.putExtra("Test", bundle.getString("Test") + " boy"); OtherActivity.this.setResult(1, intent); OtherActivity.this.finish();
注:1、一个主Activity中可跳转到多个次Activity,做对应处理时,在次Activity的setResult(1,intent)中设置好标识符(这里设置为1),然后在主Activity中的onActivityResult方法中根据resultCode做相应的处理
2、项目中出现问题,报错“WARN/ActivityManager(67):
Activity is launching as a new task, so cancelling activity result.”,解决:原来是把次Activity的launchmode设置成了singleTask,去掉次Activity的launchmode就可以了
源码:定义了4个Activity,主activity跳转到其他2个时附带String good,第二个在接收到数据后将String +"boy"后返回给主Activity并Toast;第三个在接收到数据后将String +"boy&girl"后返回给主Activity并Toast。第4个采用intent跳转+finish当前Activity的方式进行Activity之间的跳转
http://download.csdn.net/detail/u012895758/6594781
相关文章推荐
- startActivityForResult 的简单使用
- startActivityForResult的简单使用
- Android StartActivityForResult的简单使用
- StartActivityForResult简单使用
- android startActivityForResult 的简单使用
- 用 startActivityForResult 方法启动 Activity 的简单使用
- startActivityForResult 使用详解
- android中使用startActivityForResult回传数据
- Activity基本单元、startActivityForResult方法的使用
- 从Activity中返回数据--startActivityForResult的使用..
- startActivityForResult使用方法
- Android startActivityForResult的使用
- Tabhost中子Activity使用startActivityForResult后获取不到回调值问题的解决办法
- 使用startActivityForResult场景模拟
- Android值的回传即startActivityForResult的使用
- android之startActivityForResult的使用
- android中使用startActivityForResult()回传数据
- Fragment中使用startActivityForResult
- 避免使用startActivityForResult
- Fragment中使用 startActivityForResult 与 onActivityResult