基于android startActivityForResult的学习心得总结

从昨晚到现在终于调试通了一个startActivityForResult的例子,网上要么有些说的太复杂了,要么说的含糊,搞的我走了很多弯路,所以写篇心得。

在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,还同时返回一些子模块完成的数据交给主Activity处理。  用startActivity启动主界面是一个新的Intent实例,而访问的主界面还在activity栈的下面没有调出来,这样做的一个最大的问题是,回不到原界面就不能多个子功能模块共同来给主界面提供数据或服务了。这个时候就要用startActivityForResult了!

目的: MainActivity.java 是主界面,SecondActivity.java 是子功能模块,要从main启动second,second收到main发来的数据干完活之后,按按键OK会把结果汇报给main,同时自己关闭返回到main。

具体实现:

分四部分:

1,在MainActivity里面设置一个按钮sendBuddle,发送数据到SecondActivity,同时跳转到second界面。按键监听代码:

复制代码 代码如下:

class sendButtonListen implements OnClickListener{

public void onClick(View v) {

// TODO Auto-generated method stub

Intent intent = new Intent();

String str = "dajia hao ";

intent.putExtra("send", str);

intent.setClass(MainActivity.this, SecondActivity.class);

startActivityForResult(intent, 0);

}

    }

2,在SecondActivity里面的OnCreate函数里,接收来自main里的intent发来的数据。

复制代码 代码如下:

@Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_second);

        okButton = (Button)findViewById(R.id.ok); //按这个ok按键,会返回到main。      

        Intent intent = getIntent();       

        String getStr = intent.getStringExtra("send");

        TextView tv = (TextView)findViewById(R.id.sendText);

        tv.setText(getStr);

        Toast.makeText(SecondActivity.this,

        "从MainActivity传回来的数据是:"+getStr,

        Toast.LENGTH_SHORT).show();

        okButton.setOnClickListener(new okButtonListen());

}

3,在SecondActivity里实现监听Ok按键,按下后返回到MainActivity,同时自己关闭,并给MainActivity发送数据。ok按键的监听代码如下:

复制代码 代码如下:

 class okButtonListen implements OnClickListener{

public void onClick(View v) {

// TODO Auto-generated method stub

Intent sendIntent = new Intent(SecondActivity.this, MainActivity.class);//这种方法今天才学的,记下!方便这样写,坑爹的有些教程,这块没有给Inent绑定

       Bundle bundle = new Bundle();

       bundle.putString("send", "大家好");

       sendIntent.putExtras(bundle);

       SecondActivity.this.setResult(RESULT_OK, sendIntent);

       SecondActivity.this.finish();

}

4,返回到main后,main要接收second发来的数据。在MainActivity里复写它的OnActivityResult方法。

复制代码 代码如下:

 @Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

super.onActivityResult(requestCode, resultCode, data);

if(resultCode==RESULT_OK){

Bundle bundle = data.getExtras();

String str = bundle.getString("send");

Toast.makeText(MainActivity.this,

"我回来的,第二个activity传回的数据是:"+str,

Toast.LENGTH_SHORT).show();

}

}

注意:这里面不要再新建Intent,onActivityResult有三个参数,第三个参数就是Intent,只需要用他做参数就行了。

时间: 2024-08-01 07:21:38

基于android startActivityForResult的学习心得总结的相关文章

基于android startActivityForResult的学习心得总结_Android

从昨晚到现在终于调试通了一个startActivityForResult的例子,网上要么有些说的太复杂了,要么说的含糊,搞的我走了很多弯路,所以写篇心得.在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,还同时返回一些子模块完成的数据交给主Activity处理.  用startActivity启动主界面是一个新的Intent实例,而访问的主界面还在activity栈的下面没有调出来,这样做的一个最大的问题是,回不到原界面

MATERIAL DESIGN设计规范学习心得

  自学笔记就该这么做!今天分享@東門王三 同学关于Material Design的自学成果,他的学习笔记严谨有序,触类旁通,从Material Design到其他系统的设计规范都有所研究,还认真地做了思维导图,同学们可以边学习边借鉴他的自学方法,一举两得呦. 想读好书的同学,可直接到:设计师图书导航 挑选. @東門王三 :随着Android系统从Android 4.4逐步升级到Android L.Material Design作为Android Design演进的最新标准规范,也推出其完整的设

转贴: wolfenstein工作室-eMule源代码学习心得

1, eMule源代码学习心得(1):eMule代码的总体风格和其它相关工程 eMule的官方首页上写着:2002年05月13日 一个叫做 Merkur 的人,他不满意原始eDonkey2000客户端并且坚信他能够做的更好,所以他开始制作.他聚集了其它开发人员在他的周围,并且eMule工程就此诞生. eMule是一个典型的MFC程序,它的图形界面等,已经和MFC紧紧融合到了一起.因此通常情况下它只能在windows平台下运行.有一些其它的工程,如aMule等,把它进行了移植,因此跨平台的功能要强

Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)

  一.引言    本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试.      笔者没有怎么使用过Eclipse做Android学习,但是基于Android Studio类似于VS的项目架构,还是偏爱Android Studio这个I

基于Android的英文词典的实现方法_Android

英文词典是手机中经常使用的应用.因此,在本文将结合Android来讨论如何实现一个Android版的英文词典.实现英文词典的方法很多.在本文使用了SQLite数据库来保存英文单词信息.系统通过SQLite数据库中保存的单词信息来查找到与指定英文对应的中文信息.当然,实现这样一个英文词典需要解决一系列技术问题.例如,如何将保存英文单词信息的数据库文件随程序(apk文件)一起发布:发布后如何打开数据库:如何在输入前几个字母后,在AutoCompleteTextView组件提示列表中显示以所输入字符串

我的MYSQL学习心得(十六) 优化

原文:我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的

CGRidCtrl控件 学习心得

  图片传不来,需要完整文档,的可以私下找我要哈 目  录 1      引言... 1 1.1       目的... 1 1.2       参考资料... 1 2      Grid控件介绍... 1 2.1       功能介绍... 1 2.2       框架介绍... 2 2.3       主要类介绍... 4 2.3.1    CGridCtrl类... 4 2.3.2    CGridCellCheck类... 5 2.3.3    CGridCellCombo类... 7

开源项目live555学习心得

    推荐:伊朗美女找丈夫比找工作难女人婚前一定要看清三件事 × 登录注册   疯狂少男-IT技术的博客 http://blog.sina.com.cn/crazyboyzhaolei [订阅][手机订阅]   首页博文目录图片关于我 个人资料 疯狂少男   Qing 微博       加好友发纸条 写留言加关注     博客等级: 博客积分:22 博客访问:5,717 关注人气:2 获赠金笔:0 赠出金笔:0 荣誉徽章:       精彩图文   相关博文 十大女星全裸戏光脱却不漏点 八教兽

使用Promise解决多层异步调用的简单学习心得_javascript技巧

前言 第一次接触到Promise这个东西,是2012年微软发布Windows8操作系统后抱着作死好奇的心态研究用html5写Metro应用的时候.当时配合html5提供的WinJS库里面的异步接口全都是Promise形式,这对那时候刚刚毕业一点javascript基础都没有的我而言简直就是天书.我当时想的是,微软又在脑洞大开的瞎捣鼓了. 结果没想到,到了2015年,Promise居然写进ES6标准里面了.而且一项调查显示,js程序员们用这玩意用的还挺high. 讽刺的是,作为早在2012年就在M