Passing objects in to Fragments

后端 未结 2 657
醉酒成梦
醉酒成梦 2020-12-05 02:10

I\'ve been working with lots of Fragments recently and have been using two distinct methods of passing in objects to the Fragments, but the only difference that

相关标签:
2条回答
  • 2020-12-05 02:45

    for Collection such as List :

    I wanted to share my experience.

    you need to implement Parcelable

    Just use the putParcelableArrayList method.

    ArrayList<LClass> localities = new ArrayList<LClass>;
    ...
    Bundle bundle = new Bundle();
    bundle.putParcelableArrayList(KEY_LClass_LIST, localities);
    fragmentInstance.setArguments(bundle);
    
    return fragmentInstance;
    

    And retrieve it using...

    localities = savedInstanceState.getParcelableArrayList(KEY_LCLass_LIST);
    

    So, unless you need the custom ArrayList for some other reason, you can avoid doing any of that extra work and only implement Parcelable for your Locality class.

    0 讨论(0)
  • 2020-12-05 02:52

    There are 3 ways to pass objects to a fragment

    They are:

    1. Passing the object through a setter is the fastest way, but state will not be restored automatically.
    2. setArguments with Serializable objects is the slowest way (but okay for small objects, I think) and you have automatic state restoration.
    3. Passing as Parcelable is a fast way (prefer it over 2nd one if you have collection of elements to pass), and you have automatic state restoration.

    http://developer.android.com/reference/android/os/Parcelable.html

    0 讨论(0)
提交回复
热议问题