java - Android自定义Intent类

标签 java android android-intent serializable

我想将一个复杂对象从一个 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/

相关文章:

android - 如何在android正则表达式中排除数字

java - 在大 Canvas 上滚动

android - Camera intent.getData()在部分设备返回null,主要在android 7.0

android - 如何在android中使用zxing app扫描格式PDF 417的条码?

java - 为什么这段java代码可以编译

Java,正则表达式在带有约束的分隔符上分割字符串

android - 如何将对象数据类型传递给类或函数?

android - 如何使用未在Phone-Android中安装的应用程序的程序包ID获取应用程序图标

java - @Asynchronous 是否有超时

java - 如何创建动态多维ArrayList?