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