当前位置: 首页 > 知识库问答 >
问题:

通过意图在活动之间传递自定义对象时出错

詹杰
2023-03-14

我试图通过在html" target="_blank">自定义对象上实现序列化将这个简单的对象从主要活动传递到主要活动。它会导致错误。我提到了类似的堆栈溢出问题。没有任何帮助。

public class MainActivity extends Activity {
    String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent i = new Intent(this,Main2Activity.class);
    Bundle bundle = new Bundle();
    bundle.putSerializable("data",new CustomObject());
//I tried i.putExtra(bundle);
    i.putExtra("data",new CustomObject());
    startActivity(i);
    Log.d(TAG, "onCreate: ");
}

public class CustomObject implements Serializable{
    public int i = 0;
    public int j = 9;
    CustomObject(){

    }
}
}

主2活动

public class Main2Activity extends Activity {
String TAG = "Main2Activity";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    Intent i = getIntent();
    MainActivity.CustomObject c = (MainActivity.CustomObject)i.getSerializableExtra("data");
    Log.d(TAG, "onCreate: "+c.i+" "+c.j);
}
}

错误信息:

07-30 13:58:58.352 26489-26489/? E/AndroidRuntime:致命异常:主进程:gct.venkatesh.com。杂乱无章的,PID:26489 java.lang.RuntimeException:无法在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2684)处启动活动ComponentInfo{gct.venkatesh.com.scrshtrebuild/gct.venkates.hom.scrshtrebuild.MainActivity$CustomObject}:java.lang运行时异常:Parcelable在写入可序列化对象时遇到IOExceptionandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751),位于android.os.Looper.loop(Looper.java:154),位于Android.app.activityThadle$H.handleMessage(Activity线程.java:1496),位于android.os.Handler.dispatchMessage(Handler.java:102),位于java.lang.reflect.Method,位于androlid.app.ActivityThread.main(ActivatyThread.java:6186)。com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygote Init.java:889)处的invoke(Native Method)(本机方法)导致:java.lang.RuntimeException:Parcelable在android.os.Parcel.writeSerializable(Parcel.java:1527)处写入可序列化对象(名称=gct.venkatesh.com.scrshtrebuild.MainActivity$CustomObject)时遇到IOExceptionandroid.os.Parcel.writeArrayMapInternal(Parcel.java:724)上的android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1417)上的android.os.Bundle.writeToPacel(Bundle.java:1157)上android.app.ActivityManager的android.os.Parcel.writeBundle(Parcel.java:764)上代理启动活动android.app.Activity.startActivity(Activityjava:4494)的android.japp.Activity的android.app.Instrumentation.execStartActivityForResult(Activity java:4229)上的androids.app.Activity的(Activity-ManagerNative.java:3082)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)的android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119

共有1个答案

赫连俊悟
2023-03-14

通过日志中的错误:

java.io.NotSerializableException: gct.venkatesh.com.scrshtrebuilt.MainActivity at

MainActivity不可序列化,我认为平台希望MainAction是可序列化的,因为 CustomActivity是

尝试在单独的本地类(单独的文件)中定义CustomObject

 类似资料:
  • 我正在开发一个由多个活动组成的Android应用程序,我必须在它们之间传递ab对象,但我不能通过使用意图传递它,因为对象的类没有实现可序列化,我怎么做?我无法修改我的类的源代码。谢谢:)

  • 我正在开发一个Android应用程序,它读取NFC标签,检索NDEF消息,然后将其传递给WebView activity以显示那个URL网站。我正在检查Logcat,并且正在读取URL,但我认为URL没有被传递,因为我得到以下错误: 这是主要活动: 这是Webview activity,它应该获取URL并加载它: 我想获取从标记接收到的URL到 稍后将加载网站。谢谢你的帮助。

  • 我正在尝试在活动之间传递数据 我使用intents在常规活动之间传递数据 请考虑以下代码:: 假设我将来自名为的其他活动的数据作为意图发送到 现在,如何接收中的数据,这些数据是从获得的,然后再将其传递到中 象形表示为:: {EDIT}--如果根据答案可以这样做--不明确,因为AndroidTabRestaurantDescearchListView是一个选项卡活动

  • 问题内容: 我试图通过意图传递对象的ArrayList,但无法使其工作。这是我所拥有的: 在这里收到意向: 我们已经收到了两个int值,correctAnswer和faultAnswers,我可以使用它们。ArrrayList没有通过。endQuiz()方法中没有错误,但’qs = getIntent()。getParcelableArrayListExtra(“ queries”);’ 抛出错误

  • 我需要在python脚本和java引擎之间通过stdin和stdout进行一些进程间通信。 我是否可以将python对象转换为JSON,并将整个对象转换为字符串,通过stdin传递到Java,然后将该字符串转换回JSON进行处理,然后将其作为通过字符串转换的JSON对象返回到python 我只想知道是否可以通过stdin发送一个JSON对象,或者有什么可能的方法可以做到这一点

  • 我想知道是否有人可以帮助我用Intent修复此错误? 我有两个活动要连接:网格视图“MainActivity.kt”的第一个活动,列表视图“Main2Activity.kt”的第二个活动,我有来自“Main2Activity.kt”的2个对象实例(adapter1,adapter2 ),当单击“MainActivity.kt”中的特定图像时,我想传递特定的对象实例(adapter1)或(adapt