2012-11-14 21 views
10

के साथ बुलाए गए गतिविधि के बाद getIntent() को शून्य वापस करने के लिए कैसे करें यह प्रश्न मेरे मूल प्रश्न के समान था, लेकिन मुझे लगता है कि समाधान तक पहुंचने का एक बेहतर तरीका है।एक इंटेंट सेट

getIntent returns wrong intent when setIntent is followed by a rotation

मूल रूप से, अपने मुख्य Activity, जो FragmentActivity फैली में, वहाँ दो मामलों में जहां एक टुकड़ा में मैं इस गतिविधि के लिए एक आशय पारित कर रहे हैं।

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(...); 

    if (getIntent() != null && getIntent().getData() != null) { 
     String data = getIntent().getDataString(); 
     //setIntent(null); 

setIntent मेरी समस्या को हल करने का प्रयास किया गया, लेकिन यह काम करने में विफल:

इस कोड है कि समस्या हो रही है है।

क्या होता है जब मैं एक लिंक पर क्लिक करता हूं जो एक गतिविधि के रूप में मेरी गतिविधि पर वापस जाता है, तो मैं अगले टुकड़े पर जाता हूं, फिर मैं फोन घुमाता हूं, दो फ्रैगमेंट पहले पारित किया गया इरादा फिर से दिखाई देता है जब मैं getIntent पर कॉल करें।

इसलिए, जब मैं इरादे से डेटा प्राप्त करता हूं, तो मैं इसे कैसे सेट कर सकता हूं ताकि अगली कॉल getIntent पर वापस आ जाएगी? या, क्या यह समझ में आता है कि इरादे में डेटा सिर्फ शून्य है?

मैं इसे संभालने के लिए साझा किए गए संदर्भों में जानकारी अपडेट करने से बचने की कोशिश कर रहा हूं।

उत्तर

12

मुझे एक समाधान मिला जो काम पर प्रतीत होता है, लेकिन मुझे उम्मीद है कि ऐसा करने का एक बेहतर तरीका है।

if (getIntent() != null && getIntent().getData() != null) { 
     String data = getIntent().getDataString(); 
     getIntent().setData(null); 
     setIntent(null); 

मुझे लगता है कि setIntent किसी काम के नहीं है, लेकिन setData(null) चाल करने के लिए लगता है।