以传递参数之名,开启新的篇章。

这篇讲传递参数。

上一章利用了

android 传递参数给线程 android studio参数传递_数据

来跳转页面,可见Intent的作用,另外Intent还能用来传递参数。

android 传递参数给线程 android studio参数传递_android 传递参数给线程_02

给TextView加上id后回到MainActivity,在监听事件里写上:

Intent i= new Intent(MainActivity.this,AnotherAty.class);
i.putExtra("data","Hello world!");
startActivity(i);

传递的字符串已经准备好,接下来去接收那写入接收的媒介。

进入AnotherAty,我们通过getIntent()方法来将数据接收过来:

Intent i = getIntent();

记得要将TextView加进去哦。

android 传递参数给线程 android studio参数传递_传递参数_03

在这里需要将findViewByID进行强制类型转换

android 传递参数给线程 android studio参数传递_数据_04

之后要设置一个字符串进行接收数据。

tv.setText(i.getStringExtra("data"));

这样就完成了:

android 传递参数给线程 android studio参数传递_分割线_05

运行~成功!

============================分割线===============================

接下来学习传递数据包的Bundle即Bundel b = new Bundle();

android 传递参数给线程 android studio参数传递_android 传递参数给线程_06

使用方法也是差不多,只不过Bundle可以传递更多的参数。

android 传递参数给线程 android studio参数传递_分割线_07

在AnotherAty里:

android 传递参数给线程 android studio参数传递_android 传递参数给线程_08

加上Bundle的接收就行了。

运行~成功!

通过Bundle的方法我们就可以传递比较复杂的数据了。

 ============================分割线===============================

接下来学习如何在多个Activity里传递值对象。

所谓值对象就是指自定义的有值的对象。

新建立一个名为User的类

android 传递参数给线程 android studio参数传递_分割线_09

然后定义两个成员:

private String name;
private int age;

再给两个成员加入方法:

android 传递参数给线程 android studio参数传递_分割线_10

回到MainActivity中,写上要传递的数据后,会发现我们要选择两种类型分别是”Seriallzable“和"Parcelable",这两种的区别在于第一种是靠系统自动生成,程序改动的不多,运行速度慢;而第二种就反过来,需要改动很多程序,不依靠系统,运行速度快。

android 传递参数给线程 android studio参数传递_数据_11

第一种”Serializable“:

android 传递参数给线程 android studio参数传递_分割线_12

只需要在开头中加入implements Serialisable

接下来跳转到AnotherAty中:

android 传递参数给线程 android studio参数传递_android 传递参数给线程_13

将该注释的注释,加上最后的两句。

提示一下句子移位的快捷键是”Ctrl+shift+方向键“。

运行~成功!

第二种parcelable:

android 传递参数给线程 android studio参数传递_数据_14

改一下,提示错了的原因是需要增加两个方法:

android 传递参数给线程 android studio参数传递_分割线_15

OK后:

android 传递参数给线程 android studio参数传递_分割线_16

第一个不需要管,第二个则需要我们自己手动输入。

android 传递参数给线程 android studio参数传递_android 传递参数给线程_17

加入这两句达到传递数据给其他方法类的目的。

android 传递参数给线程 android studio参数传递_传递参数_18

输入:

android 传递参数给线程 android studio参数传递_数据_19

下一步:回到AnotherAty中将获取方式改成Parcelable。

android 传递参数给线程 android studio参数传递_传递参数_20

运行~成功!

  ============================分割线===============================

获取Activity的返回参数:

进入AnotherAty的xml视图文件中,将其改成LinearLayout的布局方式。

并加入

android 传递参数给线程 android studio参数传递_android 传递参数给线程_21

这一句改成垂直布局。

在视图中拖入一个输入文本框。

android 传递参数给线程 android studio参数传递_数据_22

再加入一个Button:

android 传递参数给线程 android studio参数传递_传递参数_23

用于将数据传递回去。

同样的将Activity_main.xml视图文件同样改为LinearLayout

放入一个Text View:

android 传递参数给线程 android studio参数传递_数据_24

用来呈现结果。

回到MainActivity中,定义一个Text View:

android 传递参数给线程 android studio参数传递_传递参数_25

android 传递参数给线程 android studio参数传递_android 传递参数给线程_26

到AnotherAty中写入按钮,并将接收文本框定义好:

android 传递参数给线程 android studio参数传递_数据_27

android 传递参数给线程 android studio参数传递_数据_28

给按钮添加一个监听事件。

android 传递参数给线程 android studio参数传递_数据_29

回到MainActivity中,写入启动语句:

startActivityForResult(i,0);

并添加一个函数:

android 传递参数给线程 android studio参数传递_android 传递参数给线程_30

android 传递参数给线程 android studio参数传递_分割线_31

 

定义好返回的参数;

android 传递参数给线程 android studio参数传递_数据_32

忘了还有这句。