android टुकड़े में वस्तुओं को पास करना




fragment android-bundle (2)

मैं हाल ही में बहुत सारे Fragments साथ काम कर रहा हूँ और Fragments में वस्तुओं को पास करने के दो अलग-अलग तरीकों का उपयोग कर रहा हूं, लेकिन एकमात्र अंतर जो मैं देख सकता हूं, वह यह है कि नीचे FragmentOne द्वारा लिए गए दृष्टिकोण में, जिस ऑब्जेक्ट को आप लागू करना चाहते हैं Serializable इंटरफ़ेस ( और उस के साथ जुड़े सब कुछ )।

क्या एक के ऊपर एक प्रयोग करने के कोई लाभ हैं?

public class FragmentOne extends Fragment {
    public static final String FRAGMENT_BUNDLE_KEY = 
        "com.example.FragmentOne.FRAGMENT_BUNDLE_KEY";

    public static FragmentOne newInstance(SomeObject someObject) {
        FragmentOne f = new FragmentOne();
        Bundle args = new Bundle();
        args.putSerializable(FRAGMENT_BUNDLE_KEY, someObject);
        f.setArguments(args);
        return f;
    }

    public SomeObject getSomeObject() {
        return (SomeObject) getArguments().getSerializable(FRAGMENT_BUNDLE_KEY);
    }
}

तथा

public class FragmentTwo extends Fragment {
    SomeObject mSomeObject;  

    public static FragmentTwo newInstance(SomeObject someObject) {
        FragmentTwo fragment = new FragmentTwo();
        fragment.setSomeObject(someObject);
        return fragment;
    }

    public void setSomeObject(SomeObject someObject) {
        mSomeObject = someObject;
    }
}

सूची जैसे संग्रह के लिए:

मैं अपना अनुभव साझा करना चाहता था।

आपको पार्सलबल को लागू करने की आवश्यकता है

बस putParcelableArrayList पद्धति का उपयोग करें।

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

return fragmentInstance;

और इसका उपयोग करके पुनः प्राप्त करें ...

localities = savedInstanceState.getParcelableArrayList(KEY_LCLass_LIST);

इसलिए, जब तक आपको किसी अन्य कारण से कस्टम ArrayList की आवश्यकता न हो, आप उस अतिरिक्त कार्य को करने से बच सकते हैं और केवल अपने इलाके वर्ग के लिए Parcelable को लागू कर सकते हैं।


किसी खंड में वस्तुओं को पास करने के 3 तरीके हैं

वो हैं:

  1. वस्तु को एक सेटर के माध्यम से पारित करना सबसे तेज़ तरीका है, लेकिन राज्य को स्वचालित रूप से बहाल नहीं किया जाएगा।
  2. setArguments करने योग्य वस्तुओं के साथ setArguments सबसे धीमा तरीका है (लेकिन छोटी वस्तुओं के लिए ठीक है, मुझे लगता है) और आपके पास स्वचालित राज्य बहाली है।
  3. Parcelable रूप में Parcelable करना एक तेज़ तरीका है (यदि आप पास करने के लिए तत्वों का संग्रह है तो इसे 2 से अधिक पसंद करें), और आपके पास स्वचालित स्वचालित बहाली है।

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





android-bundle