Apa itu "alat: konteks" dalam file tata letak Android?

937

Dimulai dengan versi baru ADT baru-baru ini, saya perhatikan atribut baru ini pada tata letak file XML, misalnya:

<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" />

Untuk apa "alat: konteks" digunakan?

Bagaimana ia bahkan tahu jalan yang tepat untuk aktivitas yang ditulis di sana? Apakah itu melihat paket aplikasi, di dalam manifes?

Apakah terbatas pada kelas yang memperluas Konteks atau hanya aktivitas? Apakah bisa digunakan untuk item ListView dll?

pengembang android
sumber
ya, saya bertanya-tanya apa lagi yang saya lewatkan (tanpa melihatnya di bagian "apa yang baru") karena saya selalu menginstal versi adt & sdk terbaru (saat ini menggunakan adt & sdk 20 pratinjau 3).
pengembang android
9
Lihat juga dokumen resmi di sini: < tools.android.com/tech-docs/tools-attributes#TOC-tools:context >.
MDTech.us_MAN
2
Aplikasi saya masih berfungsi tanpa konteks.
Yang Mulia
1
@ user132522 Ini semua tentang pengembangan, dalam IDE itu sendiri. Bukan untuk saat menjalankan aplikasi
pengembang Android

Jawaban:

440

Ini adalah aktivitas yang digunakan alat UI Editor untuk membuat pratinjau tata letak Anda. Itu didokumentasikan di sini :

Atribut ini menyatakan aktivitas apa yang terkait dengan tata letak ini. Ini memungkinkan fitur dalam editor atau pratinjau tata letak yang memerlukan pengetahuan tentang aktivitas, seperti apa tema tata letak harus di pratinjau dan di mana untuk memasukkan onClick handler ketika Anda membuatnya dari perbaikan cepat

Nikolay Elenkov
sumber
saya melihat . menurut tangkapan layar di sini: tools.android.com/_/rsrc/1337185954574/recent/newconfigchooser/… , itu berarti bahwa tidak harus kelas yang memperluas Konteks, kan? jika demikian, saya pikir itu lebih dari apa yang Anda katakan, meskipun saya tidak yakin apa.
pengembang android
2
Activitymeluas Context, jadi tidak yakin apa yang Anda maksud? Mungkin memang lebih banyak melakukan, jika Anda tertarik, periksa kode sumber, itu tersedia. Saya tidak tahu detailnya.
Nikolay Elenkov
oops. saya tidak membaca teks tangkapan layar dengan benar. Maaf. ketika melayang-layang di atas apa yang telah saya perlihatkan, ia juga mengatakan bahwa itu bisa berupa fragmen, tetapi fragmen tidak memiliki tema yang ditulis di mana pun, bukan? Lagi pula, saya masih tidak yakin untuk apa atribut baru ini. bertanya-tanya apakah google io baru akan menceritakan hal ini.
pengembang android
25
mereka membuat video baru yang menampilkan fitur-fitur ini: youtube.com/...
pengembang android
1
tautan dokumentasi terbaru developer.android.com/studio/write/tool-attributes.html
Clive Sargeant
380

Atribut itu pada dasarnya adalah kegigihan untuk pemilihan "Aktivitas Terkait" di atas tata letak. Saat runtime, tata letak selalu dikaitkan dengan suatu aktivitas. Tentu saja dapat dikaitkan dengan lebih dari satu, tetapi setidaknya satu. Dalam alat ini, kita perlu tahu tentang pemetaan ini (yang pada saat runtime terjadi di arah lain; suatu aktivitas dapat memanggil setContentView (tata letak) untuk menampilkan tata letak) untuk menggerakkan fitur tertentu.

Saat ini, kami hanya menggunakannya untuk satu hal: Memilih tema yang tepat untuk ditampilkan untuk tata letak (karena file manifes dapat mendaftarkan tema yang akan digunakan untuk suatu kegiatan , dan begitu kami mengetahui aktivitas yang terkait dengan tata letak, kami dapat memilih tema yang tepat untuk ditampilkan untuk tata letak). Di masa mendatang, kami akan menggunakan ini untuk mendorong fitur tambahan - seperti merender bilah tindakan (yang terkait dengan aktivitas), tempat untuk menambahkan penangan onClick, dll.

Alasan ini adalah alat: atribut namespace adalah bahwa ini hanya pemetaan waktu desain untuk digunakan oleh alat. Tata letak itu sendiri dapat digunakan oleh beberapa kegiatan / fragmen dll. Kami hanya ingin memberi Anda cara untuk memilih waktu desain yang mengikat sehingga kami dapat misalnya menunjukkan tema yang tepat; Anda dapat mengubahnya kapan saja, sama seperti Anda dapat mengubah listview dan binding fragmen kami, dll.

(Inilah perubahan lengkap yang memiliki detail lebih lanjut tentang ini )

Dan ya, tautannya Nikolay yang tercantum di atas menunjukkan bagaimana pemilih konfigurasi baru terlihat dan bekerja

Satu hal lagi: namespace "tools" adalah spesial. Alat pengemasan android tahu untuk mengabaikannya, jadi tidak satu pun dari atribut tersebut yang akan dikemas ke dalam APK. Kami menggunakannya untuk metadata tambahan di tata letak. Itu juga di mana misalnya atribut untuk menekan peringatan serat disimpan - sebagai alat: abaikan.

Tor Norbye
sumber
bagaimana cara mengetahui jalur lengkap ke aktivitas jika tidak memiliki paket dasar? apakah itu melihat file manifes?
pengembang android
2
Ya, itu memperlakukannya dengan cara yang sama seperti pendaftaran aktivitas di file manifes, di mana Anda juga bisa menghilangkan paket dalam atribut nama. Ini menambahkan pernyataan paket dari elemen root file manifes, jika perlu.
Tor Norbye
bagus apakah semua ini (dan lebih banyak lagi) akan ditampilkan di google io 2012? saya tidak sabar untuk mendengar tentang fitur-fitur baru. :)
pengembang android
1
Dalam XML yang dihasilkan untuk proyek baru itu menempatkan tools:contextnilai di TextViewlapangan. Karena ini terdengar seperti kasus penggunaan global untuk menerapkan tema ke seluruh tata letak, mengapa tidak ditempatkan di tata letak root?
Jason Robinson
3
Saya telah menambahkan dokumen yang mendokumentasikan atribut alat kami saat ini: tools.android.com/tech-docs/tools-attributes
Tor Norbye
92

Menurut Situs Proyek Alat Android :

alat: konteks

Atribut ini biasanya ditetapkan pada elemen root dalam file XML tata letak, dan mencatat aktivitas yang terkait dengan tata letak (pada waktu desain, karena jelas tata letak dapat digunakan oleh lebih dari satu tata letak). Sebagai contoh, ini akan digunakan oleh editor tata letak untuk menebak tema default, karena tema didefinisikan dalam Manifest dan dikaitkan dengan aktivitas, bukan tata letak. Anda bisa menggunakan awalan titik yang sama seperti dalam manifes untuk hanya menentukan kelas aktivitas tanpa nama paket aplikasi lengkap sebagai awalan.

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

Digunakan oleh: Layout editor di Studio & Eclipse, Lint

pembuat kode lain
sumber
14

1.Deskripsi

tools: context = "activity name"itu tidak akan dimasukkan ke dalam apk. Hanya ADTLayout Editor di file Layout Anda saat ini mengatur konteks rendering yang sesuai, tunjukkan Tata Letak Anda saat ini dalam rendering konteks adalah nama aktivitas sesuai dengan aktivitas, jika aktivitas dalam manifestfile mengatur Tema, maka ADTLayout Editor akan membuat Layout Anda saat ini sesuai dengan MainActivityTheme. Artinya jika Anda mengatur set Tema. The Light (yang lain), kemudian Anda lihat di manajer tata letak visual o kontrol latar belakang dari apa yang seharusnya menjadi Tema. The Light sepertinya. Hanya untuk menunjukkan kepada Anda apa yang Anda lihat adalah apa yang Anda dapatkan hasilnya.

Beberapa orang melihat akan mengerti beberapa, beberapa orang melihat juga tidak tahu, saya akan menambahkan beberapa kata penjelasan:

2. Sampel

Ambil yang sederhana tools:text, misalnya, beberapa gambar lagi, nyaman untuk lebih memahamitools: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" />

masukkan deskripsi gambar di sini

TextView1 mengadopsi android: text, dan menggunakan tools:textdalam TextView2, di sisi kanan editor Layout akan menampilkan sample name1, sample name2dua font, jika setelah Anda menjalankan kode untuk mengkompilasi, membuat apk, hanya menampilkan terminal sample name1, tidak menunjukkan sample name2kata-kata. Anda bisa mencoba lari, lihat bagaimana pengaruhnya.

3. Deskripsi spesifik

1.The tools: context = "activity name"tidak akan dimasukkan ke dalam apk(pemahaman: ekuivalen dari ini dikomentari, dikompilasi tidak ada efek.)

2. Hanya ADTEditor Layout (yaitu, untuk ikon di atas di sisi kanan simulator) di file Layout saat ini mengatur konteks rendering yang sesuai, Layout dari XML saat ini dalam rendering konteks adalah nama aktivitas sesuai dengan aktivitas, jika aktivitas dalam file manifes menetapkan Tema, maka ADTLayout Editor akan membuat Tata Letak Anda saat ini sesuai dengan MainActivityTema. Berarti bahwa jika Anda mengatur set Tema. Cahaya juga bisa (lainnya). (Mengerti: Anda menambahkan tools: context = "activity name", tata letak XML memberikan aktivitas yang ditentukan, menetapkan Tema dalam file manifes, digambarkan di atas simulator kanan. Gaya tema juga akan mengikuti perubahan yang sesuai dengan Tema.)

4. ringkasan

Singkatnya, properti ini terutama ditujukan di atas alat yang tepat, status tampilan waktu debugging simulator, dan kompilasi tidak berfungsi,

KeLiuyue
sumber
7

"Tools: context" adalah salah satu Atribut Desain yang dapat memfasilitasi pembuatan tata letak dalam XML dalam kerangka pengembangan. Atribut ini digunakan untuk menunjukkan kerangka kerja pengembangan yang diambil kelas aktivitas untuk mengimplementasikan tata letak. Menggunakan "alat: konteks", Android Studio memilih tema yang diperlukan untuk pratinjau secara otomatis.

Jika Anda ingin tahu lebih banyak tentang beberapa atribut lain dan alat yang berguna untuk pengembangan aplikasi Android, lihat ulasan ini: http://cases.azoft.com/4-must-know-tools-for-effective-android -pengembangan/

Mihir Patel
sumber
3

Ini adalah solusi terbaik: https://developer.android.com/studio/write/tool-attributes

Ini adalah atribut desain yang dapat kita atur konteks aktif dalam xml like

tools:context=".activity.ActivityName"

Adaptor:

tools:context="com.PackegaName.AdapterName"

masukkan deskripsi gambar di sini

Anda dapat menavigasi ke kelas java saat mengklik ikon yang ditandai dan alat memiliki lebih banyak fitur seperti

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

etx

Ashik Azeez
sumber
0

tools:context=".MainActivity" baris ini digunakan dalam file xml yang menunjukkan bahwa file sumber java mana yang digunakan untuk mengakses file xml ini. itu berarti menunjukkan pratinjau xml ini untuk file java yang terkait.

Nikita Prajapati
sumber