سؤال

مرحبًا ، لدي مشكلة في فصل ، أريد أن أقدمه في نية من خلال وضعه في Putextras () قابلة للتسلسل ويبدو أن الكود هكذا:

public abstract class ObjectA extends ArrayList<ObjectA> implements java.io.Serializable{...}

public class ObjectB extends ObjectA {...}


...
Bundle extras = new Bundle();
extras.putSerializable("blabla", ObjectB);
intent.putExtras(extras);

...

Object y = getIntent().getExtras().get("blabla");

المشكلة هي أن y الآن هو قائمة arraylist ولم تعد كائنًا لذلك لا يمكنني إلقاؤها .. إذا قمت بتغيير الكود إلى

public class ObjectB implements java.io.Serializable {...}

أنه يعمل بشكل جيد

هل كانت مفيدة؟

المحلول

من خلال تنفيذ كل من java.util.list و java.io.serializable في صفك ، فقد تسببت في هذا الأمر أندرويد علة.

نصائح أخرى

أظن أن ما يحدث هو أنه بما أنك لا تعلن عن أن ObjectB قابلة للتسلسل ، فإنه "التراجع" إلى أحدث كائن الوالدين. لذلك عندما تضعها في الحزمة ، فأنت لا تضع في الواقع في ObjectB ، لكن ObjectB يلقي مرة أخرى إلى ArrayList.

أعتقد أنه سيتعين عليك الذهاب مع رمز ("يعمل بشكل جيد").

كيف تعلن ObjectB قبل أن تنقلها إلى الحزمة؟ من ما أفهمه لسؤالك ، لا تحصل على أي خطأ عند مرور الحزمة ، فقط عند إزالته. جرب إعادة استعادة الكائن الخاص بك في نوع Object BASE مثل هذا:

ObjectB y = (ObjectB) getIntent().getExtras().get("blabla");

ال ObjectA في ArrayList يجب أن ينفذ الواجهة Parcelable. بعد ذلك ، يمكنك وضع قوائم الصغار الخاصة بك في النية ، والحصول عليها في نشاط آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top