"เครื่องมือ: บริบท" ในไฟล์เลย์เอาต์ของ Android คืออะไร


937

เริ่มจาก 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 preview 3)
นักพัฒนา android

9
นอกจากนี้ให้ดูที่เอกสารอย่างเป็นทางการที่นี่: < tools.android.com/tech-docs/tools-attributes#TOC-tools:context >
MDTech.us_MAN

2
แอพของฉันยังคงทำงานโดยไม่มีบริบท
ท่านที่เคารพมากที่สุด

1
@ user132522 ทุกอย่างเกี่ยวกับการพัฒนาใน IDE เอง ไม่ใช้สำหรับเมื่อเรียกใช้แอป
นักพัฒนา android

แล้วเรื่องนี้ล่ะ stackoverflow.com/questions/41779742/…

คำตอบ:


440

นี่เป็นกิจกรรมที่เครื่องมือแก้ไข UI ใช้เพื่อแสดงตัวอย่างเค้าโครงของคุณ มีการบันทึกไว้ที่นี่ :

แอททริบิวนี้จะประกาศว่ากิจกรรมใดที่เลย์เอาต์นี้เกี่ยวข้องโดยค่าเริ่มต้น สิ่งนี้เปิดใช้งานคุณลักษณะในตัวแก้ไขหรือการแสดงตัวอย่างเลย์เอาต์ที่ต้องการความรู้เกี่ยวกับกิจกรรมเช่นชุดรูปแบบของสิ่งที่ควรอยู่ในการแสดงตัวอย่างและตำแหน่งที่จะแทรก onClick handler เมื่อคุณสร้างจาก Quickfix


ฉันเห็น . ตามภาพหน้าจอที่นี่: tools.android.com/_/rsrc/1337185954574/recent/newconfigchooser/ …มันหมายความว่าไม่จำเป็นต้องเป็นคลาสที่ขยายบริบทใช่ไหม ถ้าเป็นเช่นนั้นฉันคิดว่ามันทำอะไรได้มากกว่าที่คุณพูดแม้ว่าฉันจะไม่แน่ใจ
นักพัฒนา android

2
ActivityขยายออกไปContextดังนั้นไม่แน่ใจว่าคุณหมายถึงอะไร มันอาจจะทำงานได้มากขึ้นถ้าคุณสนใจให้ตรวจสอบซอร์สโค้ดก็พร้อมใช้งาน ฉันไม่ทราบรายละเอียดใด ๆ
Nikolay Elenkov

โอ๊ะโอ ฉันอ่านข้อความหน้าจอไม่ถูกต้องกังวล เมื่อวางตัวเหนือสิ่งที่ฉันได้แสดงมันก็บอกว่ามันอาจจะเป็นชิ้นส่วน แต่ชิ้นส่วนไม่ได้มีการเขียนชุดรูปแบบของพวกเขาทุกที่ไม่? อย่างไรก็ตามฉันยังไม่แน่ใจว่าคุณลักษณะใหม่นี้มีไว้เพื่ออะไร สงสัยว่า google io ใหม่จะบอกเกี่ยวกับเรื่องนี้หรือไม่
นักพัฒนา android

25
พวกเขาทำวิดีโอใหม่ที่แสดงคุณสมบัตินี้: youtube.com/…
นักพัฒนา Android

1
ลิงก์เอกสารล่าสุดdeveloper.android.com/studio/write/tool-attributes.html
Clive Sargeant

380

คุณลักษณะดังกล่าวนั้นเป็นความคงอยู่ของการเลือก "กิจกรรมที่เกี่ยวข้อง" เหนือเค้าโครง ที่รันไทม์โครงร่างจะสัมพันธ์กับกิจกรรมเสมอ แน่นอนมันสามารถเชื่อมโยงกับมากกว่าหนึ่ง แต่อย่างน้อยหนึ่ง ในเครื่องมือเราจำเป็นต้องรู้เกี่ยวกับการแมปนี้ (ซึ่งเกิดขึ้นในทิศทางอื่น ณ เวลารันไทม์กิจกรรมสามารถเรียก setContentView (เลย์เอาต์) เพื่อแสดงเลย์เอาต์) เพื่อขับคุณสมบัติบางอย่าง

ตอนนี้เราใช้มันเพื่อสิ่งเดียวเท่านั้น: การเลือกชุดรูปแบบที่เหมาะสมเพื่อแสดงสำหรับรูปแบบ (เนื่องจากไฟล์รายการสามารถลงทะเบียนชุดรูปแบบเพื่อใช้สำหรับกิจกรรมและเมื่อเรารู้กิจกรรมที่เกี่ยวข้องกับเค้าโครงเราสามารถเลือกได้ ชุดรูปแบบที่เหมาะสมเพื่อแสดงสำหรับโครงร่าง) ในอนาคตเราจะใช้สิ่งนี้เพื่อขับเคลื่อนฟีเจอร์เพิ่มเติม - เช่นการแสดงผลแถบการกระทำ (ซึ่งเชื่อมโยงกับกิจกรรม), สถานที่ที่จะเพิ่มตัวจัดการ onClick เป็นต้น

เหตุผลนี้เป็นเครื่องมือ: แอตทริบิวต์ namespace คือนี่เป็นเพียงการแมปเวลาออกแบบสำหรับใช้โดยเครื่องมือ รูปแบบตัวเองสามารถใช้งานได้หลายกิจกรรม / ชิ้นส่วน ฯลฯ เราเพียงแค่ต้องการให้คุณเลือกวิธีการผูกไทม์เอาท์ของการออกแบบที่เราสามารถทำได้เช่นแสดงชุดรูปแบบที่เหมาะสม; คุณสามารถเปลี่ยนได้ตลอดเวลาเช่นเดียวกับที่คุณสามารถเปลี่ยนมุมมองรายการและการเชื่อมโยงชิ้นส่วนของเรา ฯลฯ

(นี่คือเซ็ตการแก้ไขเต็มรูปแบบซึ่งมีรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ )

และใช่ลิงค์ Nikolay ที่แสดงข้างต้นแสดงให้เห็นว่าตัวเลือกการกำหนดค่าใหม่มีลักษณะและทำงานอย่างไร

อีกอย่างหนึ่ง: เนมสเปซ "เครื่องมือ" นั้นพิเศษ เครื่องมือบรรจุภัณฑ์ android รู้ที่จะไม่สนใจดังนั้นจะไม่มีการบรรจุแอตทริบิวต์เหล่านั้นลงใน APK เราใช้มันสำหรับข้อมูลเมตาเพิ่มเติมในโครงร่าง นอกจากนี้ยังเป็นที่เก็บตัวอย่างคุณลักษณะเพื่อระงับคำเตือนที่เป็นขุย - เป็นเครื่องมือ: ละเว้น


มันจะรู้เส้นทางแบบเต็มไปยังกิจกรรมได้อย่างไรถ้ามันไม่มีแพ็คเกจพื้นฐาน ดูที่ไฟล์ Manifest?
นักพัฒนา android

2
ใช่มันกำลังดำเนินการเช่นเดียวกับการลงทะเบียนกิจกรรมในไฟล์รายการซึ่งคุณสามารถละเว้นแพ็คเกจในแอตทริบิวต์ชื่อได้ มันเป็นการประกาศแพ็กเกจล่วงหน้าจากองค์ประกอบรูทไฟล์รายการหากจำเป็น
Tor Norbye

ดีมาก จะแสดงทั้งหมด (และอีกมากมาย) ที่ google io 2012 หรือไม่ ฉันไม่สามารถรอฟังเกี่ยวกับคุณสมบัติใหม่ได้ :)
นักพัฒนาซอฟต์แวร์ Android

1
ใน XML ที่สร้างขึ้นสำหรับโครงการใหม่จะใส่tools:contextค่าลงในTextViewฟิลด์ ตั้งแต่นี้ดูเหมือนว่าเป็นกรณีการใช้งานทั่วโลกที่จะใช้ชุดรูปแบบทั้งรูปแบบทำไมมันไม่ได้อยู่ในรูปแบบราก?
Jason Robinson

3
ฉันได้เพิ่มเอกสารซึ่งเป็นเอกสารคุณลักษณะของเครื่องมือปัจจุบันของเรา: tools.android.com/tech-docs/tools-attributes
Tor Norbye

92

ตามไซต์โครงการเครื่องมือ Android :

เครื่องมือ: บริบท

โดยทั่วไปแล้วแอ็ตทริบิวต์นี้จะถูกตั้งค่าไว้ที่องค์ประกอบรูทในไฟล์ XML ของเลย์เอาต์และบันทึกว่ากิจกรรมใดที่เลย์เอาต์นั้นเกี่ยวข้อง ตัวอย่างนี้จะถูกใช้โดยเครื่องมือแก้ไขเลย์เอาต์เพื่อคาดเดาธีมเริ่มต้นเนื่องจากธีมถูกกำหนดใน Manifest และเกี่ยวข้องกับกิจกรรมไม่ใช่โครงร่าง คุณสามารถใช้คำนำหน้า dot เหมือนกับในรายการเพื่อระบุคลาสกิจกรรมโดยไม่มีชื่อแพ็กเกจแอ็พพลิเคชันแบบเต็มเป็นคำนำหน้า

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

ใช้โดย: เครื่องมือแก้ไขเลย์เอาต์ใน Studio & Eclipse, Lint


14

1.Description

tools: context = "activity name"มันจะไม่ถูกบรรจุลงในapk. ADTEditor เฉพาะเค้าโครงในไฟล์เค้าโครงปัจจุบันของคุณตั้งค่าบริบทการแสดงผลที่สอดคล้องกันแสดงเค้าโครงปัจจุบันของคุณในการแสดงผลบริบทคือชื่อกิจกรรมที่สอดคล้องกับกิจกรรมหากกิจกรรมในmanifestไฟล์ตั้งค่าธีมแล้วADTเครื่องมือแก้ไขเลย์เอาต์จะแสดงเค้าโครงปัจจุบันของคุณตาม Theme.Means ว่าหากคุณตั้งMainActivityค่าชุดรูปแบบ The Light (อื่น ๆ ) จากนั้นคุณจะเห็นในตัวจัดการเลย์เอาต์ภาพ o การควบคุมพื้นหลังของสิ่งที่ควรเป็นธีม แสงจะมีลักษณะเฉพาะเพื่อแสดงให้คุณเห็นสิ่งที่คุณเห็นคือสิ่งที่คุณได้รับผลลัพธ์

บางคนเห็นจะเข้าใจบางคนเห็นไม่ทราบฉันจะเพิ่มคำอธิบายบางคำ:

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และใช้ tools:textในTextView2 ทางด้านขวาของการแก้ไขเค้าโครงจะแสดงsample name1ที่sample name2สองตัวอักษรถ้าหลังจากที่คุณเรียกใช้รหัสในการรวบรวมสร้างapkการแสดงผลขั้วเพียง แต่sample name1ไม่ได้แสดงsample name2คำ คุณสามารถลองเรียกใช้ดูผลกระทบ

3. คำอธิบายเฉพาะ

1. tools: context = "activity name"มันจะไม่ถูกบรรจุลงในapk(ความเข้าใจ: สิ่งที่เทียบเท่ากับสิ่งนี้คือคอมเม้นท์, การคอมไพล์ไม่มีผล)

2. เฉพาะเครื่องมือADTแก้ไขเค้าโครง (เช่นสำหรับไอคอนด้านบนทางด้านขวาของเครื่องมือจำลอง) ในบริบทไฟล์ชุดการแสดงผลที่สอดคล้องกันปัจจุบันเค้าโครงของ XML ปัจจุบันในการแสดงผลบริบทเป็นชื่อกิจกรรมที่สอดคล้องกับกิจกรรมหาก กิจกรรมในไฟล์รายการตั้งค่าชุดรูปแบบแล้วADTตัวแก้ไขโครงร่างจะแสดงเค้าโครงปัจจุบันของคุณตาม Theme.Means ว่าหากคุณตั้งMainActivityค่าชุดรูปแบบ Light สามารถเป็น (อื่น ๆ ) ได้ (เข้าใจ: คุณเพิ่มtools: context = "activity name"เลย์เอาต์ XML กำลังแสดงผลกิจกรรมที่ระบุสร้างชุดรูปแบบในไฟล์รายการภาพด้านบนตัวจำลองขวาจำลองสไตล์ชุดรูปแบบจะติดตามการเปลี่ยนแปลงที่สอดคล้องกับชุดรูปแบบด้วย)

4.summary

เพื่อสรุปคุณสมบัติเหล่านี้มุ่งเน้นไปที่เครื่องมือที่เหมาะสมส่วนใหญ่สถานะการแสดงผลการดีบักเครื่องจำลองเวลาและการรวบรวมไม่ทำงาน


7

“ เครื่องมือ: บริบท” เป็นหนึ่งในคุณสมบัติการออกแบบที่สามารถอำนวยความสะดวกในการสร้างเค้าโครงใน XML ในกรอบการพัฒนา แอ็ตทริบิวต์นี้ใช้เพื่อแสดงกรอบการพัฒนาว่าจะเลือกคลาสกิจกรรมใดสำหรับการนำโครงร่างไปใช้ ใช้ "เครื่องมือ: บริบท" Android Studio เลือกชุดรูปแบบที่จำเป็นสำหรับการแสดงตัวอย่างโดยอัตโนมัติ

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติอื่น ๆ และเครื่องมือที่มีประโยชน์สำหรับการพัฒนาแอพ Android ลองดูที่รีวิวนี้: http://cases.azoft.com/4-must-know-tools-for-effective-android -development /


3

นี่คือทางออกที่ดีที่สุด: https://developer.android.com/studio/write/tool-attributes

นี่คือแอตทริบิวต์การออกแบบที่เราสามารถตั้งค่าบริบท activty ใน xml เช่น

tools:context=".activity.ActivityName"

อะแดปเตอร์:

tools:context="com.PackegaName.AdapterName"

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถนำทางไปยังคลาส Java เมื่อคลิกที่ไอคอนและเครื่องมือที่มีเครื่องหมายมีคุณสมบัติเพิ่มเติมเช่น

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

ETX


0

tools:context=".MainActivity" บรรทัดนี้ใช้ในไฟล์ xml ซึ่งระบุว่าไฟล์ต้นฉบับ java ใดที่ใช้เพื่อเข้าถึงไฟล์ xml นี้ มันหมายถึงแสดงตัวอย่าง xml นี้สำหรับไฟล์ java perticular

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.