前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jetpack Compose中的Activity跳转及传值

Jetpack Compose中的Activity跳转及传值

作者头像
码客说
发布2024-03-29 12:44:57
1730
发布2024-03-29 12:44:57
举报
文章被收录于专栏:码客码客

前言

Jetpack Compose中的页面跳转和传值和之前没什么不同。

要注意的是

组件内尽量不要进行页面的跳转,组件可以设置回调方法,在Activity中进行页面跳转操作。

页面跳转

代码语言:javascript
复制
val intent = Intent(baseContext, AppDetailActivity::class.java)
startActivity(intent)

这里要注意的是,获取上下文使用的是baseContext

页面传值

基本类型

代码语言:javascript
复制
intent.putExtra(String name, boolean value);
intent.putExtra(String name, byte value);
intent.putExtra(String name, char value);
intent.putExtra(String name, short value);
intent.putExtra(String name, int value);
intent.putExtra(String name, float value);
intent.putExtra(String name, long value);
intent.putExtra(String name, double value);
intent.putExtra(String name, String value);
intent.putExtra(String name, int[] value);
intent.putExtra(String name, Parcelable value);
intent.putExtra(String name, Serializable value);
intent.putExtra(String name, CharSequence value);

intent.putStringArrayListExtra(String name, ArrayList<String> value);

取值

代码语言:javascript
复制
Intent intent = getIntent();
boolean bool = intent.getBooleanExtra(String name, boolean defaultValue);
byte bt = intent.getByteExtra(String name, byte defaultValue);
char ch = intent.getCharExtra(String name, char defaultValue);
short sh = intent.getShortExtra(String name, short defaultValue);
int i = intent.getIntExtra(String name, int defaultValue);
float fl = intent.getFloatExtra(String name, float defaultValue);
long lg = intent.getLongExtra(String name, long defaultValue);
double db = intent.getDoubleExtra(String name, double defaultValue);
String str = intent.getStringExtra(String name)

对象

转JSON字符串

代码语言:javascript
复制
intent.putExtra(String name, String value);

获取

代码语言:javascript
复制
String str = intent.getStringExtra(String name)

使用Serializable

注意

需要API33及以上版本。

在 Android 中,可以通过 Intent 来传递自定义对象,前提是该对象必须实现 Serializable接口。

Serializable接口允许对象在不同组件间进行序列化和反序列化,以便通过 Intent 进行传递。

代码语言:javascript
复制
public class Student implements Serializable{
     private static final long serialVersionUID = 1L;
     public String name;
     public int age;
}

kotlin

代码语言:javascript
复制
import java.io.Serializable
data class CustomObject(val name: String, val age: Int) : Serializable

传递方法就是:

代码语言:javascript
复制
intent.putExtra(String name, Serializable value);
intent.getSerializableExtra(String name);

获取

代码语言:javascript
复制
intent.getSerializableExtra("appModel",Student::class.java)

使用单例

代码语言:javascript
复制
object CommonData {
    var appModel: AppModel? = null
}

页面返回

代码语言:javascript
复制
onBackPressedDispatcher.onBackPressed()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 页面跳转
  • 页面传值
    • 基本类型
      • 对象
        • 转JSON字符串
        • 使用Serializable
      • 使用单例
      • 页面返回
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档