startActivityForResult()的用法(超好用啊)
最近做的一个小东西遇到这样的情况,我从一个页面MainActivity修改一些内容,需要跳转到一个新的EditActivity去做修改操作,修改完成后就回到之前的MainActivity,因为信息被修改了,最好还是从服务器上重新获取一下,那么就要在MainActivity里重新获取,假如把重新获取数据的操作放在MainActivity的onStart()方法里,那么MainActivity跳转到其它的地方再回来不需要请求数据的,它也必然会又请求一次,这样就白白的增大了服务器的压力。
也就是说,要能有一个东西能判断,是从哪里跳转回到MainActivity的,这样就能判断是否需要重新进行网络请求了。
这里就要介绍startActivityForResult()方法了。
startActivityForResult(Intent, int)
第一个参数Intent,和普通的startActivity()里的Intent一样,里面放要请求的Activity和可能需要放的数据。
第二个参数int,是一个请求代码,整型的,这个可以自己随便定义,但这个数要大于等于0才行。因为MainActivity有可能会跳转到多个页面,如果这几个页面使用完之后,都需要返回一些信息,那么就必须要有个标识符来表示返回来过的是哪个页面的信息。
第二个方法:
setResult(int),setResult(int, Intent)
第一个参数int,是一个返回代码,整型的,这个也是自己随便定义,用来表示这个页面执行之后是个什么情况,是成功还是失败了,还是其它什么的,反正返回一个整型数,自己知道它的含义就行了。
第二个可选参数是一个Intent,可以用来存放数据。
第三个方法:
onActivityForResult(int, int, Intent)
这个方法是请求的Activity完成任务被finish()之后,会调用这个,前提是,你启动那个Activity是通过startActivityForResult()来启动的。
第一个参数int,是请求代码,就是startActivityForResult()里面的请求代码。
第二个参数int,是返回代码,就是setResult()方法里面的设置的参数。
第三个参数Intent,就是setResult(int, Intent)里面的放置数据的Intent。
详细使用请看下面的demo。
首先是MainActivity.java文件,里面有两个按钮,分别跳转两个Activity。
public class MainActivity extends Activity {
public static final int REQUEST_A = 1;
public static final int REQUEST_B = 2;
private Button btnA = null;
private Button btnB = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//findViewById()云云
//A按钮的监听器
btnA.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//跳转到ActivityA页面
Intent i = new Intent(MainActivity.this, ActivityA.class);
//发送请求代码REQUEST_A
startActivityForResult(i, REQUEST_A);
}
});
//B按钮的监听器
btnB.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//跳转到ActivityB页面
Intent i = new Intent(MainActivity.this, ActivityB.class);
//发送请求代码REQUEST_B
startActivityForResult(i, REQUEST_B);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//先判断是哪个页面返回过来的
switch (requestCode) {
case REQUEST_A:
//再判断返回过来的情况,是成功还是失败还是其它的什么……
switch (resultCode) {
case ActivityA.RESULT_SUCCESS:
//成功了
break;
case ActivityA.RESULT_FAILED:
//失败了
break;
}
break;
case REQUEST_B:
//同上……
break;
}
}
}
接下来是ActivityA.java,这个类里面具体处理一件事情。然后成功失败,把结果返回到MainActivity里面就行了。
public class ActivityA extends Activity {
public static final int RESULT_SUCCESS = 0;
public static final int RESULT_FAILED = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//找控件各种……
//我正在干些事情,修改数据啊,各种啊。
//假设数据提交失败了
boolean result = false;
//设置返回的结果,常量上面都定义好了
if (result) {
setResult(RESULT_SUCCESS);
} else {
setResult(RESULT_FAILED);
}
//结束,返回到MainActivity了
finish();
}
}
ok,说明都写在注释里了,希望对大家有所帮助。
转载请注明出处,哇哈哈哈:http://www.cnblogs.com/kross/p/3469305.html
startActivityForResult()的用法(超好用啊)的更多相关文章
- android startActivityForResult的用法
有时候我们需要把A activity提交数据给B activity处理,然后把结果返回给A 这种方式在很多种情况需要用到,比如我应用的程序需要有拍照上传的功能. 一种解决方案是 我的应用程序 〉调 ...
- startActivityForResult的用法,以及intent传递图片
开启startActivityForResult. Intent intent = new Intent(); intent.setClass(MainActivity.this, MipcaActi ...
- startActivityForResult()的用法
举例说我想要做的一个事情是,在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Act ...
- 一个调用其他activity的完整例子,使用了 onActivityResult和startActivityForResult
https://blog.csdn.net/qq_32521313/article/details/52451364 Android startActivityForResult基本用法2016年09 ...
- android基本知识(一)
今天开始更新一下android的基本知识,下面是敲代码遇到的问题. 1)我们来谈谈android.intent.category.DEFAULT的用途. 在谈这个tag的用途之前,读者要明白什 ...
- WebView与JavaScript交互--Android
转载请注明出处: http://blog.csdn.net/forwardyzk/article/details/46819925 在工作中,有一个这种需求,须要用到WebView与javascri ...
- WIN 下的超动态菜单(二)用法
WIN 下的超动态菜单(一)简介 WIN 下的超动态菜单(二)用法 WIN 下的超动态菜单(三)代码 作者:黄山松,发表于博客园:http://www.cnblogs.com/tomview/ ...
- 转帖: 一份超全超详细的 ADB 用法大全
增加一句 连接 网易mumu模拟器的方法 adb connect 127.0.0.1:7555 一份超全超详细的 ADB 用法大全 2016年08月28日 10:49:41 阅读数:35890 原文 ...
- startActivityForResult的使用和用法
startActivityForResult的使用和用法 startActivityForResult 和 onActivityResult在activity间传递数据 AndroidManifest ...
随机推荐
- python 小技巧之获取固定下面包含的某种类型文件的个数
遇到这样一个问题.我想要统计某个文件夹下有多少个py文件怎么办. 用python能解决吗?答案,能. 解决办法,使用glob 代码如下: import glob path_file_number=gl ...
- Python 字符串 整数 浮点数
• 几个函数: str() : 将一个整数或者浮点数变成字符串 int() : 将一个浮点数或一个字符串变成整数 float : 将一个整数或者字符串变成一个浮点型数据 • 整数的运算永远是精确的,而 ...
- trampoline蹦床函数解决递归调用栈问题
递归函数的调用栈太多,造成溢出,那么只要减少调用栈,就不会溢出.怎么做可以减少调用栈呢?就是采用"循环"换掉"递归". 下面是一个正常的递归函数. functi ...
- linux go环境安装
方法一 这次将源码包安装的目录是是/root下. 1.官网下载源码包. 官网链接:https://golang.org/dl/ wget https://storage.googleapis.co ...
- git实践笔记
title: git实践笔记 date: 2016-10-15 18:40:26 tags: [Git] categories: [Tool,Git] --- 概述 本文记录常用 git 的功能和命令 ...
- 亚马逊如何变成 SOA(面向服务的架构)
. 亚马逊公司不仅是世界最大的网络书店,还是世界最大的云服务商.它是怎么实现从电商到云商的转变呢? 一切都是CEO杰夫·贝索斯促成的,他对市场有着超乎常人的理解和预见. 2. 2000年前后,贝索斯有 ...
- SpringBoot集成dubbo实例
项目总览图: 最下面有项目的pom,具体内容: 项目运行注意事项: 先启动 provider, 将providers.xml中 port 先修改为20187 执行test目录 下的DubboProvi ...
- 第二次作业(homework-02)成绩公布
学位后三位和对应成绩: 057 0008 4011 4012 7014 5015 5017 6018 0019 0026 2027 7036 0038 7.5046 7048 6.5051 0061 ...
- 王者荣耀交流协会PSP Daily项目Postmortem结果
王者荣耀交流协会PSP Daily项目Postmortem结果 整理:王超 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? PSP D ...
- 11.16 Daily Scrum
由于今天是工作小周期的最后一天,今天的主要任务是解决了一周留下的技术方面的难题.一些类似于悬浮窗和进度条的bug修复全部在今天得到了解决,修复了数据库的内存泄露bug,软件的搜索功能的完善也接近尾声. ...