8

Android入门第43天-Activity与Activity间的互相传值

 1 year ago
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.
neoserver,ios ssh client

今天的课程会比较好玩,我们在之前的Service篇章中看到了一种putExtras和getExtras来进行activity与service间的传值。而恰恰这种传值其实也是Android里的通用传值法。它同样可以适用在activity与activity间传值。

Android中的传值

传单个值

f29b8daf49174c149a0c392106b531f6.png

 

d4a70c86b2db4e788768e960d5e532aa.png

具体我们来结合例子来看吧

正向传值到下一个activity上

3d86a0453ddd4c1aa9d40ed24fa02bb5.png
0d6b6a0fa91243e8abb8b588c020b6ce.png

反向传值到调用activity上

f79e546131484878a52017d91a868029.png
  • 正向传值用:Intent+Bundle传值;
  • 反向传值我们使用:registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {回调,并判断这个result.getResultCode();
  • 同时,我们制作了一个ActivityCollector extends Application来注册所有打开的activity,然后通过这个控制类来实现一键关闭所有打开的activity;

来看代码实现吧

表格控制中用到的item_list.xml
 



newCodeMoreWhite.png

表格控制用到的GenericAdapter(这个在我们之前讲Adapter的篇章中已经写过)



newCodeMoreWhite.png

 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



newCodeMoreWhite.png

ActivityCollector

用于收集和一键关闭所有打开的Activity用



newCodeMoreWhite.png

 IconBean.java



newCodeMoreWhite.png

HomePageActivity.java



newCodeMoreWhite.png

MainActivity.java



newCodeMoreWhite.png

传递值到子activity-HomePageActivity里使用putExtras自然没得话说。关键在于我们运行sub activity的launcher.launch(homeIt);方法。这个方法通过一个registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result ->来判断当子activity返回即调用了finish()生命周期后,可以得到子activity在finish()语句前setResult(101,it);中的内容即实现了子activity中的值回传上一层activity了。

自己请动一下手试试看吧。

附、工程结构

fc352ca1c48946f19b2f9398187dc52b.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK