का उपयोग करते समय टुकड़ों का डुप्लिकेट करना मेरे पास टुकड़ों के साथ एक बहुत ही अजीब समस्या है। मैं नवीनतम समर्थन पुस्तकालय का उपयोग करता हूं। मैं Google द्वारा उनके IOSCHED projectएंड्रॉइड: समर्थन फ्रैगमेंट प्रबंधक
में उपयोग किए गए समान कोड का भी उपयोग करता हूं लेकिन मुझे घूर्णन के बाद गतिविधि को पुनर्जीवित करने में समस्या है। एक गतिविधि को नष्ट करने और फिर से बनाया जाने के बाद, मैं खंड लेनदेन (ऑनस्टार्ट विधि में) के प्रबंधन के तरीकों को कॉल करता हूं। इस रेखा को केवल एक बार बुलाया जाता है, लेकिन यह टुकड़ा दो बार बनाता है!
यह मेरा गतिविधि विधि है:
public abstract class SinglePaneActivity extends FragmentActivity
{
@Override
protected void onStart()
{
super.onStart();
if(mFragment == null)
{
mFragment = onCreatePane();
mFragment.setArguments(Utils.intentToFragmentArguments(getIntent()));
Log.w(TAG, "Fragment creation counter = " + createCounter);
createCounter++;
getSupportFragmentManager()
.beginTransaction()
.add(R.id.root_container,mFragment)
.commit();
}
}
@Override
protected void onStop()
{
Log.i(TAG, "onStop");
if(mFragment != null)
{
getSupportFragmentManager()
.beginTransaction()
.remove(mFragment)
.commit();
mFragment = null;
}
super.onStop();
}
}
और मेरे लॉग्स:
--Start of application--
11-18 13:26:37.050: I/SinglePaneActivity(19040): onCreate
11-18 13:26:37.050: I/SinglePaneActivity(19040): onStart
11-18 13:26:37.055: W/SinglePaneActivity(19040): replacing fragment, counter = 1
11-18 13:26:37.075: I/MyFragment(19040): onCreate
11-18 13:26:37.110: I/MyFragment(19040): onActivityCreated
--Rotating the device--
11-18 13:26:39.600: I/SinglePaneActivity(19040): onStop
11-18 13:26:39.600: I/SinglePaneActivity(19040): onDestroy
11-18 13:26:39.605: I/MyFragment(19040): onDestroy
11-18 13:26:39.755: I/MyFragment(19040): onCreate
11-18 13:26:39.755: I/SinglePaneActivity(19040): onCreate
11-18 13:26:39.790: I/MyFragment(19040): onActivityCreated
11-18 13:26:39.800: I/SinglePaneActivity(19040): onStart
11-18 13:26:39.800: W/SinglePaneActivity(19040): replacing fragment, counter = 2
11-18 13:26:39.810: I/MyFragment(19040): onCreate
11-18 13:26:39.815: I/MyFragment(19040): onActivityCreated
--Rotating the device back--
11-18 13:36:47.060: I/SinglePaneActivity(19040): onStop
11-18 13:36:47.060: I/SinglePaneActivity(19040): onDestroy
11-18 13:36:47.060: I/MyFragment(19040): onDestroy
11-18 13:36:47.065: I/MyFragment(19040): onDestroy
11-18 13:36:47.130: I/MyFragment(19040): onCreate
11-18 13:36:47.130: I/MyFragment(19040): onCreate
11-18 13:36:47.130: I/SinglePaneActivity(19040): onCreate
11-18 13:36:47.140: I/MyFragment(19040): onActivityCreated
11-18 13:36:47.150: I/MyFragment(19040): onActivityCreated
11-18 13:36:47.150: I/SinglePaneActivity(19040): onStart
11-18 13:36:47.150: W/SinglePaneActivity(19040): replacing fragment, counter = 3
11-18 13:36:47.160: I/MyFragment(19040): onCreate
11-18 13:36:47.160: I/MyFragment(19040): onActivityCreated
--Exiting the app--
11-18 13:36:48.880: I/SinglePaneActivity(19040): onStop
11-18 13:36:48.885: I/SinglePaneActivity(19040): onDestroy
11-18 13:36:48.885: I/MyFragment(19040): onDestroy
11-18 13:36:48.890: I/MyFragment(19040): onDestroy
11-18 13:36:48.890: I/MyFragment(19040): onDestroy
तो टुकड़े की संख्या प्रत्येक रोटेशन के बाद बढ़ रहा है।
घूर्णन के बाद यह मेरे ऑनस्टार्ट विधि पर जाने से पहले खंड को पुनर्स्थापित करता है और मेरी ऑनस्टार्ट विधि उसी फ्रेम लेआउट कंटेनर में दूसरा समान खंड बनाता है। लेकिन जहां यह पहला खंड बहाल करता है? मैं इसे लूटना चाहता हूं। या क्या मुझे अपना "अगर" परीक्षण करना चाहिए यदि यह पहले से ही बनाया गया है? लेकिन मुझे नहीं पता कि इसे कैसे निर्धारित किया जाए। ऐसा लगता है कि शून्य परीक्षण बेकार है।
मैंने विधि replace()
द्वारा विधि को बदलकर छोटे कामकाज भी किए। उसके बाद, टुकड़ों की संख्या बढ़ रही नहीं है और प्रत्येक खंड को onStart
विधि में बनाया गया है इससे पहले नष्ट किया गया है। लेकिन इससे कुछ टुकड़ों में गंभीर समस्या होती है जहां मैं अपनी पृष्ठभूमि प्रक्रियाओं को शुरू करता हूं ...
कृपया मेरी मदद करें ... मुझे वास्तव में पता नहीं है कि इसके साथ क्या किया जाए। किसी भी सलाह या विचार के लिए बहुत बहुत धन्यवाद!
हाँ! धन्यवाद। मैं एक ही मुद्दे से जूझ रहा था। मेरे खंड को लोड करने से पहले मेरी गतिविधि में एक शून्य सहेजे गए इंस्टेंसस्टेट की जांच की गई चाल – Chiatar