Android学习历程(一)——Activity的启动/关闭和内部的数据传递

Activity的启动

一般使用Intent通信的方式来开启新的Activity,如在MainActivity中启动NextActivity,代码如下:

 /*新建Intent,将当前Activity的实例的引用传入作为第一个参数,将需要启动的Activity的类文件名传入作为第二个参数*/
 Intent startNextActivity = new Intent(MainActivity.this, NextActivity.class);
 /*调用启动函数*/
 startActivity(startNextActivity);

Activity的关闭

Activity的关闭调用finish函数即可实现,一般绑定用户操作进行实现,也可以在关闭之前传回一些数据。

Activity间的简单数据传递

Activity之间的数据传递依托于Intent通信进行,值得传递可以通过key-value键值对的形式进行。方法如下:

//发送端代码
 Intent startTestActivity = new Intent(MainActivity.this, TestActivity.class);
 /*使用key-value的形式,将消息传递给接收的Activity*/
 startTestActivity.putExtra("key","value");
 startActivity(startTestActivity);


//接收端代码
/*发送端Intent指定启动类为接收端,直接在接收端调用getIntent方法即可获取,然后从Intent中根据指定键获取相应类型的消息*/
 String s = getIntent().getStringExtra("key");

使用putExtra()方法传递消息支持包括基本数据类型,List抽象类型,还有Bundle类的复杂数据集合,实现方法类似于putXXXExtra()和getXXXExtra(),其中XXX代表相应的数据类型。

Activity间的复杂数据传递

Activity之间的复杂数据可以以打包为Bundle的进行传递,同样是通过Intent进行传递,将具有不同属性的某一对象实例的数据封装到一个Bundle中,这样将实例的属性作为整体进行传输。和简单数据的传输相比,使用Bundle传递数据,结构性更强,但是在只需要简单信息传递的时候,直接向Intent中装入数据更加便捷和方便。Bundle实现数据封装的代码如下:

//发送端实现
Intent startTestActivity = new Intent(MainActivity.this, TestActivity.class);
/*新建Bundle对象用于存储数据*/
Bundle myBundle = new Bundle();
/*向Bundle中传入不同类型的数据*/
myBundle.putString("stringMessage","Hello Android");
myBundle.putInt("intMessage",233);
/*向Intent中传入已经存入数据的Bundle*/
startTestActivity.putExtras(myBundle);

startActivity(startTestActivity);

//接收端实现
/*获取传说过来的Intent对象*/
Intent getMessage = getIntent();
/*从Intent中获取Bundle对象*/
Bundle getBundle = getIntent.getExtras();
/*根据key获取不同类型的数据*/
String myString = getBundle.getString("stringMessage");
Int myInt = getBundle.getInt("intMessage");

带返回结果的启动Activity

启动Activity的时候,数据传输并不总是单向的,有时候需要在被启动的Activity销毁之前,给启动Activity传递回数据,这时候,我们在启动Activity的时候,可以选用startActivityForResult(Intent intent,int requestCode)这个函数启动,它传入两个参数,第一个是包含启动信息的Intent对象,第二个是要求被启动Activity传回的结果的序列号。
当被启动的Activity需要对返回结果进行定义时,使用setResult(int resultCode,Intent data)的形式,将返回结果通过Intent的形式封装好以后,传递回启动Activity。此时,启动Activity调用onActivityResult函数对返回结果进行处理。具体实现如下:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        String result = data.getExtras().getString("myResult");
        Log.d("myTag",result);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值