19

मैं एप्लिकेशन को और अधिक सामग्री बनाने पर काम कर रहा हूं और मैं बस कुछ साझा तत्व संक्रमणों को कार्यान्वित करने के तरीके पर फंस गया हूं। मेरे पास एक गतिविधि ए है जो बैक स्टैक से इसे हटाने के लिए एक और बी शुरू करता है और फिर समाप्त() को कॉल करता है। मेरे मामले में मेरे पास एक तत्व है जो मैं दो गतिविधियों के बीच साझा करना चाहता हूं, लेकिन एक बार बी से बीत जाने के बाद, अब कोई मायने नहीं रखता है। अगर मैं स्टार्ट एक्टिविटी (सीटीएक्स, इरादा, बंडल) के बाद फिनिश() को कॉल नहीं करता हूं तो बाहर निकलें/एंटर एनीमेशन पूरी तरह से काम करता है। हालांकि, अगर मैं कॉल खत्म करता हूं, तो एनीमेशन शुरू होने से पहले वास्तव में बदसूरत झिलमिलाहट होती है।एंड्रॉइड - कॉलिंग गतिविधि खत्म करने के साथ साझा तत्व संक्रमण()

क्या ऐसा कुछ है जो मैं देख रहा हूं या क्या ऐसा करना संभव नहीं है जो मैं करने की कोशिश कर रहा हूं?

उत्तर

16

आप onStop समारोह में अपनी गतिविधि समाप्त कर सकते हैं, यदि आप केवल चाहते हैं ऐसा करने के लिए जब आप एक से संक्रमण तो बी एक झंडा बनाने और इसे सेट करने के बाद आप startActivity (ctx, आशय, बंडल) कॉल करने के लिए:

@Override 
public void onStop() { 
    super.onStop(); 
    if(mShouldFinish) 
     finish(); 
} 

यकीन है कि जब आप खत्म (कॉल करने के लिए गतिविधि बी के साथ किया जाता है सुनिश्चित करें) और नहीं finishAfterTranstion() गतिविधि एक के बाद अब वहां नहीं

है गतिविधि एक खत्म करने के बाद, बी में साझा तत्व स्क्रीन में लटका सकता है यदि आप वापस दबाएं। इस से बचने के लिए ActivityB.onEnterAnimationComplete में संक्रमण को नाम बदलें।

+0

यह मेरे लिए काम नहीं करता है, जब मैं ऐसा करता हूं तो साझा तत्व संक्रमण सही नहीं होता है। अगर मैं गतिविधि ए खत्म नहीं करता हूं तो सबकुछ ठीक है लेकिन संक्रमण समाप्त होने के बाद मैं ऐसा करना चाहता हूं। काम करने के लिए यह नहीं मिल सकता है। –

18

अद्यतन

बहुत बेहतर और सरल तरीके से

ActivityCompat. finishAfterTransition(this); 

< 3 समर्थन पुस्तकालय।

+2

मुझे लगता है कि 'finishWithTransition' नहीं मिल रहा है। इसलिए मैंने 'FinAfterTransition'' की कोशिश की और या तो काम नहीं किया। – guness

+0

इसकी सहायता लाइब्रेरी में। अपने लक्ष्य एसडीके संस्करण – ksarmalkar

+0

पर भी बंपिंग करने का प्रयास करें कॉल वास्तव में है: ActivityCompat.finishAfterTransition (यह); बस परीक्षण किया गया और यह बहुत अच्छा काम करता है। –

2

फिनिशएफ्टर ट्रांज़िशन() 5.0 और बाद में विधि बाहर निकलने के बाद गतिविधि समाप्त हो जाने के बाद आप गतिविधि को समाप्त कर सकते हैं।

2

यह शायद देर हो चुकी है लेकिन मुझे एक ही समस्या थी। क्या मेरे लिए काम किया है:

supportFinishAfterTransition(); 

यह समर्थन पुस्तकालय में शामिल है और आकर्षण की तरह काम करता है।

पीएस: जब आप supportFinishAfterTransition() पर कॉल करते हैं तो आपको finish() पर कॉल करने की आवश्यकता नहीं है।

संबंधित मुद्दे