Android लेआउट फ़ाइलों में "उपकरण: संदर्भ" क्या है?


936

ADT के एक नए संस्करण के साथ शुरू, मैंने इस नई विशेषता को लेआउट XML फ़ाइलों पर देखा है, उदाहरण के लिए:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" />

"उपकरण: संदर्भ" किसके लिए उपयोग किया जाता है?

यह उस गतिविधि का सटीक मार्ग भी कैसे जानता है जो वहां लिखी गई है? क्या यह ऐप के पैकेज को प्रकट के अंदर देखता है?

क्या यह उन कक्षाओं तक सीमित है जो संदर्भ या केवल गतिविधियों का विस्तार करते हैं? यह ListView आइटम आदि के लिए प्रयोग करने योग्य है?


हां, मुझे आश्चर्य है कि मैंने और क्या याद किया ("क्या नया है" खंडों में देखे बिना) क्योंकि मैं हमेशा नवीनतम adt & sdk संस्करणों (वर्तमान में adt & sdk 20 पूर्वावलोकन 3 का उपयोग करके) के नवीनतम संस्करण को स्थापित करता हूं।
एंड्रॉयड डेवलपर

9
इसके अलावा, आधिकारिक डॉक्स पर यहां एक नज़र डालें: < tools.android.com/tech-docs/tools-attributes#TOC-tools:context >।
MDTech.us_MAN

2
मेरा ऐप अभी भी बिना संदर्भ के काम करता है।
सबसे आदरणीय सर

1
@ user132522 आईडीई में ही यह सब विकास के बारे में है। एप्लिकेशन चलाने के लिए नहीं
android डेवलपर

इस बारे में क्या? stackoverflow.com/questions/41779742/…

जवाबों:


439

यह वह गतिविधि है जो उपकरण UI संपादक आपके लेआउट पूर्वावलोकन को प्रस्तुत करने के लिए उपयोग करता है। यह यहाँ प्रलेखित है :

यह विशेषता बताती है कि यह लेआउट डिफ़ॉल्ट रूप से किस गतिविधि से जुड़ा है। यह संपादक या लेआउट पूर्वावलोकन में उन विशेषताओं को सक्षम करता है जिनके लिए गतिविधि के ज्ञान की आवश्यकता होती है, जैसे कि लेआउट विषय का पूर्वावलोकन में क्या होना चाहिए और जब आप एक क्विकफ़िक्स से बनाते हैं तो ऑनक्लिक हैंडलर सम्मिलित करें।


समझा । यहाँ स्क्रीनशॉट के अनुसार: tools.android.com/_/rsrc/1337185954574/recent/newconfigchooser/… , इसका मतलब है कि एक वर्ग होना जरूरी नहीं है जो प्रसंग का विस्तार करता है, है ना? यदि हां, तो मुझे लगता है कि यह अधिक है कि आप क्या कह रहे हैं, हालांकि मुझे यकीन नहीं है कि क्या।
एंड्रॉइड डेवलपर

2
Activityफैली हुई है Context, तो निश्चित नहीं कि आपका क्या मतलब है? यह वास्तव में अधिक हो सकता है, यदि आप रुचि रखते हैं, तो स्रोत कोड की जांच करें, यह उपलब्ध है। मुझे कोई जानकारी नहीं है।
निकोले एलेनकोव

उफ़। मैंने स्क्रीनशॉट के पाठ को सही ढंग से नहीं पढ़ा है। जब मैंने जो दिखाया है उस पर मँडराते हुए, यह भी कहता है कि यह एक टुकड़ा हो सकता है, लेकिन टुकड़े उनके विषय में कहीं भी नहीं लिखे हैं, नहीं? वैसे भी, मुझे अभी भी यकीन नहीं है कि यह नई विशेषता क्या है। आश्चर्य है कि अगर नया google io इस बारे में बताएगा।
एंड्रॉयड डेवलपर

25
उन्होंने एक नया वीडियो बनाया, जो इस सुविधाओं को दिखाता है: youtube.com/-
एंड्रॉइड डेवलपर

1
नवीनतम दस्तावेज़ीकरण लिंक developer.android.com/studio/write/tool-attributes.html
क्लाइव सार्जेंट

380

यह विशेषता मूल रूप से लेआउट के ऊपर "एसोसिएटेड गतिविधि" चयन के लिए दृढ़ता है। रनटाइम पर, एक लेआउट हमेशा एक गतिविधि से जुड़ा होता है। यह निश्चित रूप से एक से अधिक के साथ जुड़ा हो सकता है, लेकिन कम से कम एक। टूल में, हमें कुछ विशेषताओं को चलाने के लिए इस मैपिंग के बारे में पता होना चाहिए (जो रनटाइम में दूसरी दिशा में होता है; एक गतिविधि एक लेआउट प्रदर्शित करने के लिए setContentView (लेआउट) कह सकती है)।

अभी, हम इसे केवल एक चीज़ के लिए उपयोग कर रहे हैं: लेआउट के लिए दिखाने के लिए सही विषय चुनना (चूंकि मैनिफ़ेस्ट फ़ाइल किसी गतिविधि के लिए उपयोग करने के लिए थीम पंजीकृत कर सकती है , और एक बार जब हम लेआउट से जुड़ी गतिविधि जान लेते हैं, तो हम चुन सकते हैं लेआउट के लिए दिखाने के लिए सही विषय)। भविष्य में, हम इसका उपयोग अतिरिक्त सुविधाओं को चलाने के लिए करेंगे - जैसे कि एक्शन बार (जो गतिविधि के साथ जुड़ा हुआ है) को रेंडर करना, ऑनक्लिक हैंडलर जोड़ने की जगह आदि।

कारण यह एक उपकरण है: नाम स्थान विशेषता यह है कि यह केवल उपकरण द्वारा उपयोग के लिए एक पदनाम मानचित्रण है। लेआउट का उपयोग स्वयं कई गतिविधियों / अंशों आदि के द्वारा किया जा सकता है। हम आपको केवल एक डिज़ाइनिंग बाइंडिंग चुनने का एक तरीका देना चाहते हैं जैसे कि हम उदाहरण के लिए सही विषय दिखा सकते हैं; आप इसे किसी भी समय बदल सकते हैं, जैसे आप हमारी सूची और खंड बाइंडिंग आदि को बदल सकते हैं।

(यहाँ पूर्ण changeset बारे में अधिक विवरण नहीं है है इस )

और हाँ, ऊपर सूचीबद्ध लिंक निकोले दिखाता है कि नया कॉन्फ़िगरेशन चॉसर कैसा दिखता है और काम करता है

एक और बात: "उपकरण" नाम स्थान विशेष है। Android पैकेजिंग उपकरण इसे अनदेखा करना जानता है, इसलिए उन विशेषताओं में से कोई भी एपीके में पैक नहीं किया जाएगा। हम लेआउट में अतिरिक्त मेटाडेटा के लिए इसका उपयोग कर रहे हैं। यह भी है जहाँ उदाहरण के लिए एक प्रकार का वृक्ष चेतावनी को दबाने के लिए उपकरण संग्रहीत हैं - उपकरण के रूप में: उपेक्षा।


आधार का कोई पैकेज नहीं होने पर यह गतिविधि का पूरा रास्ता कैसे जानता है? क्या यह मैनिफ़ेस्ट फ़ाइल को देखता है?
Android डेवलपर

2
हां, यह इसे उसी तरह से व्यवहार कर रहा है जैसे कि घोषणापत्र में गतिविधि पंजीकरण, जहां आप नाम विशेषता में पैकेज को छोड़ सकते हैं। यदि आवश्यक हो, तो यह प्रकट फ़ाइल रूट तत्व से पैकेज घोषणा को प्रस्तुत करता है।
Tor Norbye

अच्छा है। क्या यह सब (और अधिक) Google io 2012 में दिखाया जाएगा? मैं नई सुविधाओं के बारे में सुनने के लिए इंतजार नहीं कर सकता। :)
एंड्रॉयड डेवलपर

1
एक नए प्रोजेक्ट के लिए उत्पन्न XML में यह फ़ील्ड tools:contextपर मान डालता है TextView। चूंकि यह पूरे लेआउट में एक विषय को लागू करने के लिए एक वैश्विक उपयोग के मामले जैसा लगता है, इसलिए इसे रूट लेआउट में क्यों नहीं रखा गया है?
जेसन रॉबिन्सन

3
मैंने एक दस्तावेज़ जोड़ा है जो हमारे वर्तमान टूल विशेषताओं का दस्तावेज देता है: tools.android.com/tech-docs/tools-attributes
Tor Norbye

92

एंड्रॉइड टूल्स प्रोजेक्ट साइट के अनुसार :

उपकरण: संदर्भ

यह विशेषता आम तौर पर एक लेआउट एक्सएमएल फाइल में रूट एलिमेंट पर सेट की जाती है, और लेआउट को किस एक्टिविटी से जोड़ा जाता है (डिजाइनटाइम पर, चूंकि स्पष्ट रूप से एक लेआउट एक से अधिक लेआउट का उपयोग किया जा सकता है)। यह उदाहरण के लिए लेआउट संपादक द्वारा डिफ़ॉल्ट थीम का अनुमान लगाने के लिए उपयोग किया जाएगा, क्योंकि थीम मैनिफेस्ट में परिभाषित किए गए हैं और लेआउट से नहीं, बल्कि गतिविधियों से जुड़े हैं। आप केवल उपसर्ग के रूप में पूर्ण अनुप्रयोग पैकेज नाम के बिना गतिविधि वर्ग निर्दिष्ट करने के लिए मैनिफ़ेस्ट में उसी बिंदु उपसर्ग का उपयोग कर सकते हैं।

<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">  

द्वारा उपयोग किया जाता है: स्टूडियो और ग्रहण, लेआउट में लेआउट संपादक


14

1.Description

tools: context = "activity name"यह आपके वर्तमान लेआउट फ़ाइल में apk.Only ADTलेआउट संपादक में पैक नहीं किया जाएगा , जो संबंधित संदर्भ प्रदान करता है, संदर्भ प्रस्तुत करने में अपना वर्तमान लेआउट दिखाएं गतिविधि का नाम गतिविधि से मेल खाता है, यदि manifestफ़ाइल में गतिविधि एक थीम सेट करती है, तो ADTलेआउट एडिटर आपके वर्तमान लेआउट को थीम के अनुसार प्रस्तुत करेगा। यदि आप सेट को MainActivityएक थीम सेट करते हैं । लाइट (अन्य), तब आप दृश्य लेआउट प्रबंधक ओ पृष्ठभूमि में देखते हैं कि थीम क्या होनी चाहिए। प्रकाश ऐसा दिखता है। केवल आपको यह दिखाने के लिए कि आप क्या देखते हैं, आपको क्या परिणाम मिलते हैं।

कुछ लोग देखेंगे कुछ समझेंगे, कुछ लोगों को यह भी पता नहीं है, मैं कुछ शब्दों की व्याख्या जोड़ूंगा:

2.Sample

tools:textउदाहरण के लिए एक सरल , कुछ और छवि, आगे समझने के लिए सुविधाजनक लेंtools:context

<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="sample name1" />

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="sample name2" />

यहां छवि विवरण दर्ज करें

TextView1 ने अपनाया android: text, और 2 tools:textमें उपयोग करें TextView, लेआउट संपादक के दाईं ओर sample name1, sample name2दो, फ़ॉन्ट प्रदर्शित करेगा , यदि आप कोड को चलाने के लिए, उत्पन्न apk, टर्मिनल प्रदर्शन केवल चलाने के लिए, शब्द sample name1नहीं दिखाते हैं sample name2। आप चलाने की कोशिश कर सकते हैं, देखें कि कैसे प्रभाव होता है।

3. विशिष्ट विवरण

1. tools: context = "activity name"यह में पैक नहीं किया जाएगा apk(समझ: इस के बराबर टिप्पणी की है, संकलित कोई प्रभाव नहीं है।)

2. केवल ADTलेआउट संपादक (यानी, सिम्युलेटर के दाईं ओर उपर्युक्त आइकन के लिए) वर्तमान लेआउट फ़ाइल में संबंधित प्रतिपादन संदर्भ सेट किया गया है, संदर्भ को प्रस्तुत करने में वर्तमान XML का लेआउट गतिविधि का नाम है, जो गतिविधि से मेल खाती है, यदि मेनिफ़ेस्ट फ़ाइल में गतिविधि एक थीम सेट करती है, फिर ADTलेआउट संपादक थीम के अनुसार आपके वर्तमान लेआउट को प्रस्तुत करेगा। यदि आप सेट को MainActivityएक थीम सेट करते हैं । लाइट (अन्य) भी हो सकती है। (समझें: आपने जोड़ा tools: context = "activity name", एक्सएमएल लेआउट निर्दिष्ट गतिविधि प्रदान कर रहा है, मैनिफ़ेस्ट फ़ाइल में एक थीम स्थापित करता है, दाएं सिम्युलेटर थीम शैली के ऊपर चित्रित किया गया, थीम के अनुरूप परिवर्तनों का भी पालन करेगा।)

4.summary

योग करने के लिए, ये गुण मुख्य रूप से सही उपकरण के ऊपर लक्षित होते हैं, सिम्युलेटर डिबगिंग समय प्रदर्शन स्थिति, और संकलन काम नहीं करता है,


7

"उपकरण: संदर्भ" डिजाइन विशेषताओं में से एक है जो विकास के ढांचे में XML में लेआउट निर्माण की सुविधा प्रदान कर सकता है। इस विशेषता का उपयोग विकास ढांचे को दिखाने के लिए किया जाता है कि लेआउट को लागू करने के लिए गतिविधि वर्ग को क्या चुना जाता है। "टूल्स: संदर्भ" का उपयोग करते हुए, एंड्रॉइड स्टूडियो पूर्वावलोकन के लिए आवश्यक विषय को स्वचालित रूप से चुनता है।

यदि आप Android एप्लिकेशन विकास के लिए कुछ अन्य विशेषताओं और उपयोगी टूल के बारे में अधिक जानना चाहते हैं, तो इस समीक्षा पर एक नज़र डालें: http://cases.azoft.com/4-must-know-tools-for-effective-android लिए विकास /


3

यह सबसे अच्छा समाधान है: https://developer.android.com/studio/write/tool-attributes

यह डिज़ाइन विशेषताएँ हैं जैसे हम xml में सक्रियता संदर्भ सेट कर सकते हैं

tools:context=".activity.ActivityName"

एडाप्टर:

tools:context="com.PackegaName.AdapterName"

यहां छवि विवरण दर्ज करें

चिह्नित आइकन पर क्लिक करने पर आप जावा क्लास में नेविगेट कर सकते हैं और टूल में अधिक सुविधाएँ हैं

tools:text=""
tools:visibility:""
tools:listItems=""//for recycler view 

etx


0

tools:context=".MainActivity" इस लाइन का उपयोग xml फ़ाइल में किया जाता है जो यह दर्शाता है कि इस xml फ़ाइल को एक्सेस करने के लिए किस जावा स्रोत फ़ाइल का उपयोग किया जाता है। इसका मतलब है कि यह jml perticular java फ़ाइलों के लिए पूर्वावलोकन है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.