Android入门第43天-Activity与Activity间的互相传值
source link: https://blog.csdn.net/lifetragedy/article/details/128176176
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
今天的课程会比较好玩,我们在之前的Service篇章中看到了一种putExtras和getExtras来进行activity与service间的传值。而恰恰这种传值其实也是Android里的通用传值法。它同样可以适用在activity与activity间传值。
Android中的传值
传单个值
具体我们来结合例子来看吧
正向传值到下一个activity上
反向传值到调用activity上
- 正向传值用:Intent+Bundle传值;
- 反向传值我们使用:registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {回调,并判断这个result.getResultCode();
- 同时,我们制作了一个ActivityCollector extends Application来注册所有打开的activity,然后通过这个控制类来实现一键关闭所有打开的activity;
来看代码实现吧
表格控制中用到的item_list.xml
表格控制用到的GenericAdapter(这个在我们之前讲Adapter的篇章中已经写过)
activity_home_page.xml文件
- activity_main.xml文件里点击【注册】按钮跳到activity_home_page.xml文件。
- 然后把activity_main.xml文件中的内容显示在activity_home_page.xml的toast中。
- 在activity_home_page.xml文件中选择一个图标后返回activity_main.xml,并显示用户选择的内容;
activity_main.xml
ActivityCollector
用于收集和一键关闭所有打开的Activity用
IconBean.java
HomePageActivity.java
MainActivity.java
传递值到子activity-HomePageActivity里使用putExtras自然没得话说。关键在于我们运行sub activity的launcher.launch(homeIt);方法。这个方法通过一个registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result ->来判断当子activity返回即调用了finish()生命周期后,可以得到子activity在finish()语句前setResult(101,it);中的内容即实现了子activity中的值回传上一层activity了。
自己请动一下手试试看吧。
附、工程结构
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK