ระบบ Android จะทริกเกอร์การเปลี่ยนแปลงการกำหนดค่าทุกครั้งที่เชื่อมต่อหรือถอดแป้นพิมพ์ออกจากอุปกรณ์ แอปของคุณต้องจัดการการเปลี่ยนแปลงการกำหนดค่าแป้นพิมพ์ได้อย่างมีประสิทธิภาพเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่นและเพิ่มประสิทธิภาพของผู้ใช้ให้ได้สูงสุดในอุปกรณ์หน้าจอขนาดใหญ่ที่มีแป้นพิมพ์แบบถอดได้
ป้องกันการสร้างกิจกรรมใหม่เมื่อเปลี่ยนแป้นพิมพ์
หากไม่ต้องการให้ระบบสร้างกิจกรรมขึ้นมาใหม่เมื่อเชื่อมต่อหรือถอดแป้นพิมพ์แบบถอดได้ ให้เพิ่มค่าที่เกี่ยวข้องกับแป้นพิมพ์ลงในแอตทริบิวต์ configChanges
ของไฟล์ Manifest ของแอป และเพิ่มมุมมองลงในลําดับชั้นมุมมองของกิจกรรมเพื่อให้แอปฟังการเปลี่ยนแปลงการกําหนดค่าได้
1. ประกาศแอตทริบิวต์ configChanges
อัปเดตองค์ประกอบ <activity>
ในไฟล์ Manifest ของแอปโดยเพิ่มค่า keyboard|keyboardHidden
ลงในรายการการเปลี่ยนแปลงการกำหนดค่าที่มีการจัดการแล้ว ดังนี้
<activity
...
android:configChanges="...|keyboard|keyboardHidden">
2. เพิ่มมุมมองว่างลงในลําดับชั้นของมุมมอง
ประกาศมุมมองใหม่และเพิ่มโค้ดแฮนเดิลภายในเมธอด
onConfigurationChanged()
ของมุมมอง
Kotlin
val v = object : View(this) { override fun onConfigurationChanged(newConfig: Configuration?) { super.onConfigurationChanged(newConfig) // Handler code here. } }
Java
View v = new View(this) { @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Handler code here. } };
ข้อมูลสำคัญ
android:configChanges
: แอตทริบิวต์ขององค์ประกอบ<activity>
ในไฟล์ Manifest ของแอป แจ้งให้ระบบทราบเกี่ยวกับการเปลี่ยนแปลงการกำหนดค่าที่แอปจัดการView#onConfigurationChanged()
: เมธอดที่ตอบสนองต่อการนำไปใช้การกำหนดค่าแอปใหม่
ผลลัพธ์
ตอนนี้แอปจะตอบสนองต่อการเชื่อมต่อหรือถอดแป้นพิมพ์ภายนอกออกโดยที่ไม่ต้องสร้างกิจกรรมที่ทำงานอยู่ขึ้นมาใหม่
คอลเล็กชันที่มีคู่มือนี้
คู่มือนี้เป็นส่วนหนึ่งของคอลเล็กชันคู่มือฉบับย่อที่มีการดูแลจัดการ ซึ่งครอบคลุมเป้าหมายการพัฒนา Android ที่กว้างขึ้น ดังนี้
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=th)