簡體   English   中英

將對象(包含arraylist)從一個活動傳遞到另一個活動

[英]passing object (which contains arraylist ) from one activity to another activity

嗨,朋友們,我正在將對象(包含arraylist)從一個活動傳遞給另一個活動,通過可序列化讀取,我們可以在活動中按意圖傳遞對象,但是當我這樣做時,我在最后一個異常詳細信息中提到了一個異常,這是我的代碼,通過谷歌搜索我讀到這個,這是arraylist的問題,我正在通過但我將如何通過....

在網絡上給出了例子,我們只能通過數組列表或paas對象,但是我的問題是我想在一個對象,一個數組列表和其他一些變量中傳遞,目前我只使用一個變量。 ......

import java.io.Serializable;
import java.util.ArrayList;

public class Common_info implements Serializable{


private static final long serialVersionUID = 1L;



private int numberOfFormats;
private ArrayList<Object> listOfFormats;



public int getNumberOfFormats() {
    return numberOfFormats;
}
public void setNumberOfFormats(int numberOfFormats) {
    this.numberOfFormats = numberOfFormats;
}
public ArrayList<Object> getListOfFormats() {
    return listOfFormats;
}
public void setListOfFormats(ArrayList<Object> listOfFormats) {
    this.listOfFormats = listOfFormats;
}


}

這就是我打電話的部分

        Class<?> setClass;              
        Object obj_set_class;

         setClass = Class.forName(str_set_class_name_with_full_path);               
         obj_set_class = setClass.newInstance();



        Object obj_arr_parameters[] = {mode,set_code};
        Class<?> class_arr_Parameters_type[] = new Class[obj_arr_parameters.length];

          for (int i = 0; i < obj_arr_parameters.length; i++) {
                if (obj_arr_parameters[i] instanceof Integer) {

                    class_arr_Parameters_type[i] = Integer.TYPE;

                } else if (obj_arr_parameters[i] instanceof String) {

                    class_arr_Parameters_type[i] = String.class;

                }/*else if (obj_arr_parameters[i] instanceof EditText) {

                    class_arr_Parameters_type[i] = EditText.class;
                }*/

            }
        Method thisMethod = setClass.getDeclaredMethod("getTestInfo", class_arr_Parameters_type);
        Common_info obj_Common_info =   (Common_info) thisMethod.invoke(obj_set_class, obj_arr_parameters);

        System.out.println("number of uis " +obj_Common_info.getNumberOfFormats());

        Intent intent = new Intent(this,ActStartTest2.class);
        intent.putExtra("student_id", student_id);
        intent.putExtra("student_name", student_name);
        intent.putExtra("set_code", set_code);
        intent.putExtra("set_common_info", obj_Common_info);
        //intent.putExtra("mode", CConstants.PRACTICE_MODE);
        startActivity(intent);

展覽細節

    09-05 08:15:56.308: W/System.err(7893): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.cuelearn.cuemath_k8.beans.Common_info)
09-05 08:15:56.318: W/System.err(7893):     at android.os.Parcel.writeSerializable(Parcel.java:1316)
09-05 08:15:56.318: W/System.err(7893):     at android.os.Parcel.writeValue(Parcel.java:1264)
09-05 08:15:56.318: W/System.err(7893):     at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
09-05 08:15:56.318: W/System.err(7893):     at android.os.Bundle.writeToParcel(Bundle.java:1692)
09-05 08:15:56.328: W/System.err(7893):     at android.os.Parcel.writeBundle(Parcel.java:636)
09-05 08:15:56.328: W/System.err(7893):     at android.content.Intent.writeToParcel(Intent.java:7013)
09-05 08:15:56.328: W/System.err(7893):     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2076)
09-05 08:15:56.328: W/System.err(7893):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1419)
09-05 08:15:56.328: W/System.err(7893):     at android.app.Activity.startActivityForResult(Activity.java:3424)
09-05 08:15:56.328: W/System.err(7893):     at android.app.Activity.startActivityForResult(Activity.java:3385)
09-05 08:15:56.328: W/System.err(7893):     at android.app.Activity.startActivity(Activity.java:3627)
09-05 08:15:56.328: W/System.err(7893):     at android.app.Activity.startActivity(Activity.java:3595)
09-05 08:15:56.328: W/System.err(7893):     at com.cuelearn.cuemath_k8.act.ActHomeScreen.startTest(ActHomeScreen.java:212)
09-05 08:15:56.338: W/System.err(7893):     at com.cuelearn.cuemath_k8.act.ActHomeScreen.onSelectedConcept(ActHomeScreen.java:140)
09-05 08:15:56.338: W/System.err(7893):     at com.cuelearn.cuemath_k8.ui_files.frag_general.FragConceptsList.onClick(FragConceptsList.java:76)
09-05 08:15:56.338: W/System.err(7893):     at android.view.View.performClick(View.java:4438)
09-05 08:15:56.338: W/System.err(7893):     at android.view.View$PerformClick.run(View.java:18422)
09-05 08:15:56.338: W/System.err(7893):     at android.os.Handler.handleCallback(Handler.java:733)
09-05 08:15:56.338: W/System.err(7893):     at android.os.Handler.dispatchMessage(Handler.java:95)
09-05 08:15:56.338: W/System.err(7893):     at android.os.Looper.loop(Looper.java:136)
09-05 08:15:56.338: W/System.err(7893):     at android.app.ActivityThread.main(ActivityThread.java:5017)
09-05 08:15:56.358: W/System.err(7893):     at java.lang.reflect.Method.invokeNative(Native Method)
09-05 08:15:56.358: W/System.err(7893):     at java.lang.reflect.Method.invoke(Method.java:515)
09-05 08:15:56.368: W/System.err(7893):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
09-05 08:15:56.368: W/System.err(7893):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
09-05 08:15:56.368: W/System.err(7893):     at dalvik.system.NativeStart.main(Native Method)
09-05 08:15:56.378: W/System.err(7893): Caused by: java.io.NotSerializableException: com.cuelearn.cuemath_k8.ui_files.frag_questions.Frag_Ui_Type_1
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
09-05 08:15:56.378: W/System.err(7893):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
09-05 08:15:56.398: W/System.err(7893):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
09-05 08:15:56.398: W/System.err(7893):     at java.util.ArrayList.writeObject(ArrayList.java:648)
09-05 08:15:56.398: W/System.err(7893):     at java.lang.reflect.Method.invokeNative(Native Method)
09-05 08:15:56.398: W/System.err(7893):     at java.lang.reflect.Method.invoke(Method.java:515)
09-05 08:15:56.398: W/System.err(7893):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1053)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
09-05 08:15:56.408: W/System.err(7893):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
09-05 08:15:56.418: W/System.err(7893):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
09-05 08:15:56.418: W/System.err(7893):     at android.os.Parcel.writeSerializable(Parcel.java:1311)
09-05 08:15:56.418: W/System.err(7893):     ... 25 more
Intent intent=new Intent(this,ActStartTest2.class);
intent.putExtra("student_id", student_id);
intent.putExtra("student_name", student_name);
intent.putExtra("set_code", set_code);
intent.putExtra("set_common_info", obj_Common_info);  
startActivity(intent);

在ActStartTest2類中嘗試

Intent i = getIntent();
Common_info  com_Info = (Common_info)i.getSerializableExtra("set_common_info");

堆棧跟蹤中提到了java.io.NotSerializableException: com.cuelearn.cuemath_k8.ui_files.frag_questions.Frag_Ui_Type_1這意味着您正在嘗試將其放入要放入包裹的對象層次結構中的某個位置引用此(不可序列化)類(可能是obj_common_info,但我不確定)。

恰如其分-在Android中,建議使用包裹而不是可序列化的類。 沒錯,它可能需要更多的編碼,但是據說速度更快。 檢查一下

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM