gpt4 book ai didi

java - Android自定义Intent类

转载 作者:行者123 更新时间:2023-12-01 09:29:47 25 4
gpt4 key购买 nike

我想将一个复杂对象从一个 Activity 发送到另一个 Activity,因此这个复杂对象无法序列化,因为该对象中的某些字段是系统类并且本身不可序列化。这就是为什么我想创建名为“MyIntent”的自定义类继承自 android.content.Intent,通过这种方式,我可以将任何类型的对象放入我的自定义 Intent 中。但是,在第二个 Activity 中, getIntent() 方法返回 android.content.Intent 实例,而不是 MyIntent 实例。我不明白为什么,也许我没有正确实现 android.content.Intent 类。

public class MyIntent extends Intent
{
}

//starting activity
MyIntent intent = new MyIntent();
intent.setClass(context, SecondActivity.class);
context.startActivity(intent);


//inside of onCreate() of SecondActivity
Intent i = getIntent();
i instanceof MyIntent = false

最佳答案

startActivity() 涉及进程间通信,即使您正在启动的 Activity 位于同一应用程序和同一进程中也是如此。 Android 将忽略您的子类,因为处理 startActivity() 请求的操作系统进程无法使用您的子类,因为它位于您的应用程序中,并且操作系统进程不是您的应用程序。而且,将启动 Activity 的请求传递回您的进程的 IPC 将不知道有关您的子类的任何信息。

或者:

  • 将这些组合成一个 Activity (例如,使用两个 fragment ),或者

  • 使用某种单例数据管理器,这两个 Activity 都可以使用

关于java - Android自定义Intent类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39532031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com