Android: مشكلة مع الكائن القابل للتسلسل في نية
-
20-09-2019 - |
سؤال
مرحبًا ، لدي مشكلة في فصل ، أريد أن أقدمه في نية من خلال وضعه في 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
. بعد ذلك ، يمكنك وضع قوائم الصغار الخاصة بك في النية ، والحصول عليها في نشاط آخر.