以传递参数之名,开启新的篇章。
这篇讲传递参数。
上一章利用了
来跳转页面,可见Intent的作用,另外Intent还能用来传递参数。
给TextView加上id后回到MainActivity,在监听事件里写上:
Intent i= new Intent(MainActivity.this,AnotherAty.class);
i.putExtra("data","Hello world!");
startActivity(i);
传递的字符串已经准备好,接下来去接收那写入接收的媒介。
进入AnotherAty,我们通过getIntent()方法来将数据接收过来:
Intent i = getIntent();
记得要将TextView加进去哦。
在这里需要将findViewByID进行强制类型转换
之后要设置一个字符串进行接收数据。
tv.setText(i.getStringExtra("data"));
这样就完成了:
运行~成功!
============================分割线===============================
接下来学习传递数据包的Bundle即Bundel b = new Bundle();
使用方法也是差不多,只不过Bundle可以传递更多的参数。
在AnotherAty里:
加上Bundle的接收就行了。
运行~成功!
通过Bundle的方法我们就可以传递比较复杂的数据了。
============================分割线===============================
接下来学习如何在多个Activity里传递值对象。
所谓值对象就是指自定义的有值的对象。
新建立一个名为User的类
然后定义两个成员:
private String name;
private int age;
再给两个成员加入方法:
回到MainActivity中,写上要传递的数据后,会发现我们要选择两种类型分别是”Seriallzable“和"Parcelable",这两种的区别在于第一种是靠系统自动生成,程序改动的不多,运行速度慢;而第二种就反过来,需要改动很多程序,不依靠系统,运行速度快。
第一种”Serializable“:
只需要在开头中加入implements Serialisable
接下来跳转到AnotherAty中:
将该注释的注释,加上最后的两句。
提示一下句子移位的快捷键是”Ctrl+shift+方向键“。
运行~成功!
第二种parcelable:
改一下,提示错了的原因是需要增加两个方法:
OK后:
第一个不需要管,第二个则需要我们自己手动输入。
加入这两句达到传递数据给其他方法类的目的。
输入:
下一步:回到AnotherAty中将获取方式改成Parcelable。
运行~成功!
============================分割线===============================
获取Activity的返回参数:
进入AnotherAty的xml视图文件中,将其改成LinearLayout的布局方式。
并加入
这一句改成垂直布局。
在视图中拖入一个输入文本框。
再加入一个Button:
用于将数据传递回去。
同样的将Activity_main.xml视图文件同样改为LinearLayout
放入一个Text View:
用来呈现结果。
回到MainActivity中,定义一个Text View:
到AnotherAty中写入按钮,并将接收文本框定义好:
给按钮添加一个监听事件。
回到MainActivity中,写入启动语句:
startActivityForResult(i,0);
并添加一个函数:
定义好返回的参数;
忘了还有这句。