मुझे "newInstance" -Pterntern (Best practice for instantiating a new Android Fragment) के बारे में पता है। लेकिन मैं एक टुकड़े के इन तर्कों को कैसे अपडेट करूं उदाहरण के लिए यदि कोई अन्य खंड डेटा बदलता है?एक टुकड़े के तर्कों को अद्यतन करने के लिए सबसे अच्छा अभ्यास?
मुझे फ्रैगमेंट/गतिविधि के बीच कॉलबैक-विधियों के बारे में पता है, लेकिन ये कॉलबैक तर्क अपडेट नहीं करेंगे ?!
उदाहरण के लिए: खंड के निर्माण पर मैं बंडल के साथ एक यूआरआई पास करता हूं। फिर दूसरा खंड इस यूआरआई को पहले खंड पर परिवर्तन उरी (उरी यूरी) विधि कॉलबैक के माध्यम से बदलता है। यदि तब खंड को फिर से बनाया जाता है (उदाहरण के लिए स्क्रीन रोटेशन के कारण) यह बाद में अपडेट की गई यूरी के बजाए तर्कों के बंडल से पहले यूआरआई का उपयोग करेगा, सही?
इसे हल करने का सबसे अच्छा अभ्यास क्या है? क्या मुझे इसे सहेजे गए इन्स्टेंसस्टेट में मैन्युअल रूप से संग्रहीत करना है और उपयोग पर यह तय करना है कि इंस्टेंसस्टेट या तर्क-बंडल का उपयोग करना है या नहीं?
मैं अपने टुकड़े के तर्कों से निपटने में एक मानक तरीका के लिए देख रहा हूँ, इसलिए मुझे लगता है मैं इस तरह के एक दृष्टिकोण के साथ जा रहा हूँ (छद्म कोड):
private Uri arg1;
public static Fragment newInstance(Uri arg1) {
create bundle
create fragment instance
set bundle to fragment
return fragment
}
private void onCreate(Bundle savedInstance) {
if(savedInstance != null) {
arg1 = savedInstance.uri
}
}
private Uri getUri() {
if(arg1 == null) {
arg1 = getArguments.uri
}
if(arg1 == null) {
arg1 = defaultValue
}
}
तो मैं एक बस एकीकृत है मेरे तर्क तक पहुंचने का तरीका। और अगर मुझे उस तर्क की आवश्यकता होती है, तो मुझे और परेशानी का उपयोग करने की ज़रूरत नहीं है।
आप इसके बारे में क्या सोचते हैं?
हां। कितना कोड बात कर रहे हैं? एक oveeriden विधि-'onSaveInstanceState'- 1 अतिरिक्त लाइन के साथ और 'ऑनक्रेट' में एक if-else कथन? – gunar
असफल डिज़ाइन दोष दोष अन्य टुकड़ों पर निर्भर नहीं होना चाहिए – danny117
उस खंड के सार्वजनिक तरीके में तर्कों को 'पुनः लिखना' के बारे में क्या? –