2012-04-15 17 views
61

मैं Android डेवलपर मार्गदर्शिका में के बारे में दस्तावेज़ Fragments पढ़ चुके हैं और मैंने देखा है कि कभी कभी वे कक्षा टुकड़ा टैग विशेषता android के साथ का दृष्टांत को निर्दिष्ट करें: नाम विशेषता: और कुछ समय वे क्लास का उपयोग नाम और वर्ग:गतिविधि लेआउट: टुकड़ा वर्ग: एंड्रॉयड बनाम: नाम का श्रेय

<fragment 
    android:name="com.example.news.ArticleReaderFragment" 
    android:id="@+id/viewer" 
    android:layout_weight="2" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" /> 

<fragment 
    class="com.example.android.apis.app.FragmentLayout$TitlesFragment" 
    android:id="@+id/titles" 
    android:layout_weight="1" 
    android:layout_width="0px" 
    android:layout_height="match_parent" /> 

एंड्रॉयड हैं विनिमेय? यदि मैं एक्लिप्स में स्वत: पूर्णता समारोह का उपयोग करता हूं, तो वे दोनों एक ही दस्तावेज़ीकरण युक्ति दिखाते हैं (यानी विशेषता वर्ग नाम को तुरंत चालू करने के लिए प्रदान करती है)। हो सकता है कि कक्षा को तत्काल करने के लिए आपको दूसरा नाम इस्तेमाल करना चाहिए, जो जावा फ़ाइल नाम से अलग है, जैसे टाइटलफ्रैगमेंट जो FragmentLayout.java फ़ाइल में है? या क्या मैं एंड्रॉइड के साथ सिंटैक्स पैकेज.फाइलडोटजावा $ कक्षा का उपयोग कर सकता हूं: नाम विशेषता?

मैं एंड्रॉइड जावा क्लासेस के लिए एक्सएमएल टैग और विशेषताओं के लिए कुछ दस्तावेज लेना चाहता हूं (मैंने इसके बारे में अन्य question में पूछा है)।

उत्तर

23

एंड्रॉइड हैं: नाम और श्रेणी: विनिमय करने योग्य?

संभवतः, हाँ। मैंने केवल class का उपयोग किया है, और ऐसा लगता है कि Google के अधिकांश उदाहरण उपयोग करते हैं, लेकिन मुझे लगता है कि वे कुछ नमूने में android:name का उपयोग करते हैं। दुर्भाग्य से, <fragment> के लिए कोई औपचारिक और पूर्ण दस्तावेज़ीकरण नहीं है।

+0

मैं वास्तव में चाहते हैं प्रलेखन था। चूंकि 'कक्षा' में नामस्थान नहीं है, इसलिए मैं उत्सुक हूं कि उस विशेषता का उपयोग अभी नहीं किया गया था, जबकि टुकड़े विकसित किए जा रहे थे लेकिन इन्हें छोड़ दिया गया क्योंकि वे अब संगतता को तोड़ नहीं सकते हैं। स्थिरता के लिए, 'एंड्रॉइड: नाम' कभी भी थोड़ा बेहतर लगता है और उपयोगकर्ता 1550716 ने इंगित किया है, वे एक दूसरे के बदले में दिखाई देते हैं। – spaaarky21

+0

@ स्पाकार्की 21: हाँ, मैंने हर जगह 'एंड्रॉइड: नाम' पर स्विच किया है। – CommonsWare

+1

नाम बनाम वर्ग के उपयोग के लिए अतिरिक्त विश्वसनीयता: इंटेलिजे आईडीईए अपने नवीनतम लेआउट संपादक (v13) – rmirabelle

39

Activity.onCreateView स्रोत कहते हैं:

String fname = attrs.getAttributeValue(null, "class"); 
TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.Fragment); 
if (fname == null) { 
    fname = a.getString(com.android.internal.R.styleable.Fragment_name); 
} 

यही प्रतीत होता है इसका मतलब है कि कार्यक्रम लग रहा है "वर्ग" पहली विशेषता। और असफल दिखने पर "नाम" विशेषता। तो जहां तक ​​यह अधिक कुशल है तो "कक्षा" का उपयोग करके यह सच है।

+1

मैंने अभी जांच की है, एंड्रॉइड स्टूडियो 2.0 द्वारा प्रदान किया गया मूल टेम्पलेट डिफ़ॉल्ट रूप से 'name: xxx' विशेषता का उपयोग करता है। – yask

+0

"एंड्रॉइड: में नाम विशेषता लेआउट में तत्काल करने के लिए फ्रैगमेंट क्लास निर्दिष्ट करती है।" डेवलपर वेबसाइट में मैंने यह परिभाषा देखी है। पृष्ठ: [लिंक] (https://developer.android.com/guide/components/fragments.html)। –

0

क्षमा करें सभी विशेषज्ञों यहाँ हैं, मैं गलत हो सकता है लेकिन प्रति मेरी जानकारी एंड्रॉयड के रूप में: नाम टुकड़ा की विशेषता है जब हम getFragmentByTag (उपयोग करते हैं, टुकड़ा खोजने के लिए प्रयोग किया जाता है) fragmentManager वर्ग के विधि। भी एंड्रॉइड: वर्ग विशेषता का उपयोग खंड वर्ग को खोजने के लिए किया जाता है जिसे हम आमतौर पर स्थिर खंड के लिए शामिल करते हैं।

आशा इस में मदद मिलेगी .. धन्यवाद

+1

[इस पृष्ठ] के अनुसार (http://developer.android.com/reference/android/app/Fragment.html), वे इसके लिए 'एंड्रॉइड: टैग' विशेषता का उपयोग करते हैं, जो समझ में आता है: 'एंड्रॉइड: टैग कर सकते हैं खंड के लिए एक विशिष्ट टैग नाम प्रदान करने के लिए में उपयोग किया जाए – user1978019

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

  • कोई संबंधित समस्या नहीं^_^