woong's

Android Parcel 에러 본문

Develop/Android

Android Parcel 에러

dlsdnd345 2016. 2. 13. 21:18
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Android Parcel 에러 


안녕하세요. Fragment 를 통해서 객체를 넘기다가 발생한 오류가 있어 이렇게 포스트를 쓰고 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    public Fragment newInstance(ArrayList<Board> boardList) {
        BoardFragment fragment = new BoardFragment();
        Bundle args = new Bundle();
        args.putSerializable("boardList", boardList);
        fragment.setArguments(args);
        return fragment;
    }
 
    public BoardFragment() {
    }
 
    @SuppressWarnings("unchecked")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.board_fragment_main, container,false);
 
        ArrayList<Board> boardList = (ArrayList<Board>)getArguments().get("boardList");
 
        ListView boardListView = (ListView)rootView.findViewById(R.id.list_board);
        boardAdapter = new BoardAdapter(getActivity(), R.layout.row_board_list, boardList);
        boardListView.setAdapter(boardAdapter);
        
        return rootView;
    }


 

위의 코드를 보면 ArrayList 를 넘기기 위해서 putSerializable 을 사용하고 onCreateView putSerializable  을 받았습니다. 이와 같이 작성해서 화면을 실행하면 실행이 잘되고 있습니다 . 하지만 핸드폰 생명주기가 Pause 상태로 즉 , 화면이 

닫히는 상태가 되면 아래와 같은 에러가 나타 납니다 . 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
04-28 01:05:09.406: E/AndroidRuntime(17936): FATAL EXCEPTION: main
04-28 01:05:09.406: E/AndroidRuntime(17936): java.lang.RuntimeException: Parcel: unable to marshal value com.iris.entities.Board@429ed288
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeValue(Parcel.java:1235)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeList(Parcel.java:622)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeValue(Parcel.java:1195)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeMapInternal(Parcel.java:591)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Bundle.writeToParcel(Bundle.java:1646)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeBundle(Parcel.java:605)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:132)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeTypedArray(Parcel.java:1102)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:368)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeParcelable(Parcel.java:1254)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeValue(Parcel.java:1173)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeMapInternal(Parcel.java:591)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Bundle.writeToParcel(Bundle.java:1646)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Parcel.writeBundle(Parcel.java:605)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2603)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3250)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Handler.handleCallback(Handler.java:730)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.os.Looper.loop(Looper.java:137)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at android.app.ActivityThread.main(ActivityThread.java:5493)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at java.lang.reflect.Method.invokeNative(Native Method)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at java.lang.reflect.Method.invoke(Method.java:525)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
04-28 01:05:09.406: E/AndroidRuntime(17936):     at dalvik.system.NativeStart.main(Native Method)
 

 

 

​이 에러는 객체가 직렬화가 되어 있지 안아서 나타나는 에러 입니다 . 

객체를 직렬화 시켜야 합니다 .




위와 같이 implements 를 통해 Serializable 을 입력하고 하단의 ID 입력을 통해서 직렬화를 진행 합니다 .


그러면 정상작동하는 것을 볼 수 있습니다 .


Comments