2011-06-16 5 views
117

मुझे Fragment कक्षा में setTag(String tagName) विधि जैसी कुछ नहीं मिली है। Fragment टैग जो मैंने पाया है उसे सेट करने का एकमात्र तरीका FragmentTransaction कर रहा है और पैरामीटर के रूप में टैग नाम पास कर रहा है।कोड द्वारा एक टुकड़ा टैग कैसे सेट करें?

क्या यह कोड द्वारा Fragment टैग को स्पष्ट रूप से सेट करने का एकमात्र तरीका है?

उत्तर

101

हां। तो लेनदेन के समय पर एकमात्र तरीका है, उदा। add, replace, या लेआउट के हिस्से के रूप में उपयोग कर।

मैंने इसे संगतता स्रोतों की एक परीक्षा के माध्यम से निर्धारित किया क्योंकि मैंने अतीत में कुछ बिंदुओं के बारे में संक्षेप में देखा था।

+2

आपका जवाब झूठ [यहां] [1] stackoverflow [1 पर पोस्ट में ]: http: // stackoverflow।कॉम/प्रश्न/9363072/एंड्रॉइड-सेट-फ्रैगमेंट-आईडी – Chaitanya

+1

यहां वर्णित अनुसार फ्रैगमेंट ट्रांज़ेक्शन के ऐड (इंट कंटेनर व्यूआईडी, फ्रैगमेंट फ्रैगमेंट, स्ट्रिंग टैग) का उपयोग करें: http://stackoverflow.com/a/13244471/4002895 @PJL कृपया संपादित करें आपका जवाब। यह जवाब लोगों को भ्रामक – dasar

+0

यह बहुत असुविधाजनक है। –

25

आप अपनी गतिविधि लेआउट xml फ़ाइल के अंदर एक टैग प्रदान कर सकते हैं।

"एंड्रॉइड की आपूर्ति करें: एक अद्वितीय स्ट्रिंग के साथ टैग विशेषता।"

जैसे ही आप एक लेआउट xml में आईडी असाइन करते हैं।

android:tag="unique_tag" 

link to developer guide

+25

यदि कोई लेआउट फ़ाइल का उपयोग कर रहा था तो यह काम करेगा। लेकिन यह सवाल जावा में गतिशील रूप से टैग को सेट करने के लिए संदर्भित करता है। –

+0

यह वह उत्तर था जिसकी मुझे आवश्यकता थी क्योंकि कभी-कभी कुछ पुस्तकालयों का उपयोग करते समय, आपके पास खंड लेनदेन पर नियंत्रण नहीं होता है, इसलिए आप प्रोग्राम को प्रोग्रामेटिक रूप से सेट नहीं कर सकते हैं। धन्यवाद! – RJFares

-17

आप Fragment तर्क के लिए एक संपत्ति के रूप में टैग जोड़ सकते हैं। अगर टुकड़ा नष्ट हो जाता है और फिर ओएस द्वारा इसे फिर से बनाया जाएगा तो इसे स्वचालित रूप से पुनर्स्थापित कर दिया जाएगा।

उदाहरण: -

final Bundle args = new Bundle(); 
    args.putString("TAG", "my tag"); 
    fragment.setArguments(args); 
+0

मेरे लिए काम नहीं करता – David

+0

मेरे लिए भी काम नहीं करता –

+0

मुझे तुम्हारा क्या मतलब है। धन्यवाद! –

60

आप इस तरह से टुकड़ा करने के लिए टैग सेट कर सकते हैं:

Fragment fragmentA = new FragmentA(); 
getFragmentManager().beginTransaction() 
    .replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG") 
    .addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit(); 
+4

जहां मैं इस कोड का उपयोग करता हूं? FragmentPagerAdapter में getItem में? –

4

आप भी इस तरह सभी टुकड़े प्राप्त कर सकते हैं:

V4 fragmets के लिए

List<Fragment> allFragments = getSupportFragmentManager().getFragments(); 

app.fragment लिए

List<Fragment> allFragments = getFragmentManager().getFragments(); 
0

मैं जानता हूँ कि यह करता है, तो किसी को भी एक ही समस्या है सामना कर रहा है 6 साल पहले किया गया लेकिन जैसा मैंने किया है है:

एक टैग फ़ील्ड के साथ एक कस्टम Fragment कक्षा बनाएं:

public class MyFragment extends Fragment { 
private String _myTag; 
public void setMyTag(String value) 
{ 
    if("".equals(value)) 
    return; 
    _myTag = value; 
} 
//other code goes here 
} 

-Before sectionPagerAdapter बस ऐसे ही टैग सेट करने के लिए टुकड़ा जोड़ने:

MyFragment mfrag= new MyFragment(); 
mfrag.setMyTag("TAG_GOES_HERE"); 
sectionPagerAdapter.AddFragment(mfrag);