การเคลื่อนย้ายและการหายไปของโค้ด ปัญหาเกี่ยวกับ XML Editor ของ Eclipse


95

บางครั้งโค้ดของฉันเคลื่อนที่ด้วยตัวเองหรือหายไปในโปรแกรมแก้ไข Eclipse XML

อ๊ะ!

เมื่อฉันเน้นรหัสที่ได้รับผลกระทบบรรทัดที่ไฮไลต์จะพยายามแก้ไขตัวเอง แต่เมื่อฉันเลื่อนหรือลากเมาส์ไปในทิศทางตรงกันข้ามรหัสจะเลื่อนอีกครั้ง โดยพื้นฐานแล้วฉันจะมีบรรทัดของโค้ดที่ซ้ำขาดหายไปและขาดแสดงจากไฟล์ที่ไม่มีข้อผิดพลาด ไฟล์ที่ได้รับผลกระทบจะคอมไพล์และถ้าฉันปิด / เปิดใหม่อีกครั้งปัญหานี้จะหายไปในขณะนี้ มีความคิดเห็นเกี่ยวกับสิ่งที่เกิดขึ้นหรือไม่?


เพิ่มเติม: Jeff Axelrodให้ลิงก์ไปยังรายงานข้อบกพร่องใหม่กับ Google


ดูเหมือนจะเป็นปัญหาด้านกราฟิกสำหรับฉัน OS และ Eclipse เวอร์ชันของคุณคืออะไร?
sd

Vista และ Eclipse 3.7.2 ฉันมองไปรอบ ๆ ในไซต์บั๊ก Eclipse แต่ไม่มีโชค บางทีฉันอาจไม่มีคำหลักที่สื่อความหมาย
แซม

2
ฉันมีปัญหาเดียวกัน Win7 Pro 32 บิตและ Eclipse 3.7.2 พร้อม Android 17.0.0 ... สถานการณ์เดียวกันกับที่คุณอธิบายในคำตอบของคุณ ไม่พบรายงานข้อบกพร่องใด ๆ เช่นกัน
แพท

ฉันกำลังประสบสิ่งนี้เหมือนกันมันทำให้ฉันแทบคลั่ง ... ในกรณีของฉันใช้ Windows XP กับ eclipse indigo ปัญหาเกิดขึ้นเสมอฉันเปลี่ยนจากเค้าโครงกราฟิกเป็นตัวแก้ไข xml
mdelolmo

1
รายงานข้อผิดพลาดของ Android ยื่นที่นี่
Jeff Axelrod

คำตอบ:


32

ข้อบกพร่องนี้ (ในที่สุด) ได้รับการแก้ไขแล้วใน ADT 21 ขณะนี้การแก้ไขพร้อมใช้งานแล้วใน ADT 21 Preview 9 ซึ่งโพสต์เมื่อไม่กี่นาทีที่ผ่านมาที่นี่: https://android-review.googlesource.com/#/c/44936/1

เหตุผลที่คุณได้รับสิ่งประดิษฐ์ทางสายตาแปลก ๆ ก็คือหากไฟล์มีการสิ้นสุดบรรทัด DOS ที่ใช้งานไม่ได้ (การขนส่งหลายรายการส่งคืนโดยไม่ขึ้นบรรทัดใหม่สำหรับการคืนค่าการขนส่งแต่ละครั้ง) Eclipse จะสับสนมาก นั่นเป็นปัญหาคราสhttps://bugs.eclipse.org/bugs/show_bug.cgi?id=375421

การแก้ไขมีสองส่วน: (1) ประการแรก ADT ได้รับการแก้ไขเพื่อที่จะไม่แนะนำลำดับ \ r \ r เหล่านี้ในเอกสารอีกต่อไป สิ่งนี้ทำให้แน่ใจว่าคุณจะไม่ได้รับเอกสารใหม่ที่ทำให้เกิดพฤติกรรมการแก้ไขแปลก ๆ แต่จะไม่แก้ไขเอกสารรุ่นเก่าด้วยการลงท้ายบรรทัดเหล่านี้ย้อนหลังดังนั้นหากคุณเปิดเอกสารเหล่านี้คุณจะยังคงได้รับพฤติกรรมการแก้ไขแปลก ๆ

(2) ประการที่สองมีการตรวจสอบผ้าสำลีแบบใหม่ซึ่งค้นหาจุดสิ้นสุดบรรทัดที่ขาดในเอกสาร การดำเนินการนี้จะเพิ่มขึ้นเรื่อย ๆ ดังนั้นหากคุณแก้ไขไฟล์ XML ที่มีปัญหานี้ ADT จะเพิ่มเครื่องหมายแสดงข้อผิดพลาดสำหรับปัญหานี้พร้อมกับ Quickfix เพื่อทำการผ่าตัดบนเอกสารเพื่อแก้ไข

กล่าวโดยย่อ: รับ ADT 21 Preview 9; เรียกใช้ Lint ในโปรเจ็กต์ของคุณและค้นหาข้อร้องเรียนใด ๆ เกี่ยวกับไฟล์ที่มีจุดสิ้นสุดของบรรทัดที่ขาดและหากพบให้ใช้ Quickfix จากนี้ไปการแก้ไขเพิ่มเติมด้วยโปรแกรมแก้ไขเค้าโครงควรจัดรูปแบบไฟล์อย่างสม่ำเสมอ

FYI การแก้ไขที่เกี่ยวข้องอยู่ที่นี่: https://android-review.googlesource.com/#/c/44936/

คำแนะนำในการอัปเดตเครื่องมือ SDK และปลั๊กอิน Eclipse ADT ได้อย่างง่ายดายอยู่ที่นี่: http://tools.android.com/preview-channel

- Tor (จากทีมเครื่องมือ Android)


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

ใช้งานได้ดีสำหรับฉัน ฉันอยู่ใน Eclipse Juno เพิ่งไปที่ Help> Install new software> What is already installed? จากนั้นฉันก็เลือกอุปกรณ์ Android ทั้งหมดจาก Google เลือกอัปเดตและตอนนี้ชีวิตก็กลับมาดีอีกครั้ง
rodrigo-silveira

32

หลังจากการทดสอบบางครั้งฉันพบว่าตัวเลือก "จัดรูปแบบ XML โดยอัตโนมัติที่แก้ไขโดยโปรแกรมแก้ไขเค้าโครงภาพ" (ในค่ากำหนด | Android | บรรณาธิการ) อาจเป็นตัวการ

จากการทดสอบของฉันฉันพบว่าการเปลี่ยนแปลงคุณสมบัติ (เช่น layout_gravity) ในขณะที่อยู่ในโหมดการออกแบบเค้าโครงกราฟิกจะทำให้การแสดงภาพของไฟล์เป็นไปอย่างรวดเร็วเมื่อฉันกลับไปที่โหมด XML (ข้อความ) เมื่อตัวเลือกนี้เปิดอยู่ แต่ ฉันไม่มีปัญหาเมื่อปิดเครื่อง

หากคุณต้องการรูปแบบ XML เมื่อคุณกลับจากโหมดการออกแบบกราฟิกเค้าโครงเพียงแค่ใช้ทางลัดCtrl+ +Shift Fนอกจากนี้ฉันไม่เห็นปัญหาใด ๆ กับการใช้ตัวเลือก "Format on Save"; แม้ว่าฉันจะใช้มันในโหมดเค้าโครงกราฟิก คุณจึงสามารถใช้Ctrl+ Sแทนได้ในขณะที่คุณยังอยู่ในโหมดเค้าโครงกราฟิกเพื่อบันทึกและจัดรูปแบบ XML ของคุณ

ฉันได้ลองใช้ตัวเลือกตัวแก้ไขอื่น ๆ เช่น "แสดงตัวบ่งชี้ช่วง" หรือ "ใช้อักขระเพื่อแสดงการเปลี่ยนแปลงในไม้บรรทัดแนวตั้ง" แต่ฉันไม่เห็นความแตกต่างในพฤติกรรมเมื่อเปิดใช้งานหรือยกเลิกการเปิดใช้งานตัวเลือกเหล่านี้

สุดท้ายเพื่อแก้ไขการแสดงภาพของไฟล์เมื่อเกิดความเสียหาย ฉันพบว่าการใช้ทางลัด: Ctrl+ A, Ctrl+ C, Ctrl+ Vนั้นง่ายกว่าการปิด / เปิดไฟล์อีกครั้งเล็กน้อย สิ่งนี้เทียบเท่ากับการทำ Select All, Copy, Paste; คัดลอกไฟล์ XML ทั้งหมดทับตัวเองได้อย่างมีประสิทธิภาพ


4
เมื่อใช้ ADT เวอร์ชัน 20120624 ... และ Indigo Service Release 2 และ SDK Tools Rev 20 และเมื่อ "ฟอร์แมต XML โดยอัตโนมัติ ... " ไม่ทำงานฉันยังคงมีเส้นหายไปและเปลี่ยนเป็นบรรทัดอื่น
Brian

1
ลองกับ Juno ในตอนนี้ฉันไม่สามารถสร้างข้อบกพร่องนี้กับ Juno ได้อีก อย่างไรก็ตามยังมีข้อบกพร่องอื่น ๆ กับ Juno ด้วย ตัวอย่างเช่นในครั้งเดียวเมื่อเปิดไฟล์ XML สองไฟล์คีย์ลบกำลังทำงานกับไฟล์ที่ไม่ถูกต้อง: การพยายามลบอักขระหนึ่งตัวในไฟล์เดียวเป็นการลบอักขระในไฟล์อื่นแทน อย่างไรก็ตามปุ่ม Backspace ก็ใช้ได้ ฉันจะต้องเปลี่ยนการกำหนดค่า eclipse.ini เริ่มต้นด้วยเนื่องจากในบางครั้งฉันได้รับข้อความแสดงข้อผิดพลาดเกี่ยวกับการไม่มีพื้นที่ฮีปเมื่อพยายามเรียกใช้ EXE บนโปรแกรมจำลอง คุณตรวจสอบทั้งเวอร์ชัน 32 บิตและ 64 บิตหรือไม่
SylvainL

ฉันเชื่อว่าฉันใช้เฉพาะเวอร์ชัน 32 บิต
Brian

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

1
ฉันยังคงมีปัญหานี้ในบางครั้ง แต่ไม่ใช่กับ Graphical Editor: เป็นไฟล์ AndroidManifest.xml แทน ซึ่งใช้โปรแกรมแก้ไขอื่น นี่เป็นเวอร์ชันล่าสุด - Juno แต่ต้องยอมรับว่าช่วงนี้ฉันไม่มีเวลาทำงานกับแอปพลิเคชัน Android มากนักดังนั้นฉันจึงไม่สามารถบอกได้อย่างแน่นอน
SylvainL

12

ยังคงพบข้อผิดพลาดนี้ใน Juno (Eclipse 4.2.0, ADT r20)

การแก้ไขของฉัน: ไปที่ Window -> Preferences -> Android -> Editors ผมมีทั้ง"รูปแบบ XML ใช้ XML Android มาตรฐาน ..."และ"การตั้งค่าการใช้งาน Eclipse สำหรับการเยื้อง ...."การตรวจสอบ สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้


1
ไม่เพียงแค่ยกเลิกการเลือก "รูปแบบ XML โดยใช้ Android XML มาตรฐาน ... " มันจะแก้ไขความผิดพลาดของ XML แปลก ๆ แต่คุณต้องใช้ชีวิตตามแบบแผน Eclipse ด้วย
tom_mai78101

โดยส่วนตัวแล้วฉันชอบการประชุม Eclipse มากกว่า Android one ไม่ได้แยกความแตกต่างระหว่างวงเล็บปิดแท็กเปิด ( >) และวงเล็บปิดแท็กแบบสแตนด์อโลน ( />) สำหรับการพิจารณาว่าจะอยู่ข้างหน้าด้วยช่องว่าง (ตัวเลือก จำกัด ไว้ที่ทั้งสองอย่างหรือไม่ก็ได้) ดูเหมือนจะเป็นปัญหาเล็กน้อย แต่ด้วยเหตุผลบางอย่างฉันพบว่ามันน่ารำคาญมาก
JAB

12

แก้ไข: มีวิธีการที่เร็วกว่าดังนั้นจึงถูกนำไปด้านบน:

Ctrl+ F -> กรอกแบบนั้น:

  1. "ค้นหา"          "\ r \ r \ n"
  2. "แทนที่"    "\ r \ n"
  3. เปลี่ยน"นิพจน์ทั่วไป"เป็นเปิด
  4. หลังจากนั้นให้กด"แทนที่ทั้งหมด"ปุ่ม
  5. Ctrl+A
  6. ยกเลิกการเลือกข้อความ
  7. มีความสุข =)

ต้นฉบับอยู่ที่นี่: อย่าซ่อนปัญหานั้นหากคุณสามารถแก้ไขได้ บางครั้งการปิดไฟล์ XML ก็ไม่ได้ช่วยอะไร

สำหรับการแก้ไขมาดูเหตุผลของมัน ก่อนอื่นเปิด "แสดงอักขระช่องว่าง" ( หน้าต่าง> ค่ากำหนด> ทั่วไป> บรรณาธิการ> บรรณาธิการข้อความ> แสดงอักขระช่องว่าง )

จากนั้นกลับไปที่ไฟล์ XML ของคุณ

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

ในภาพที่ปรับขนาดคุณอาจเห็นความแตกต่างของสีสัญลักษณ์ "\ n"

จากนั้นวางเคอร์เซอร์ไว้ที่สัญลักษณ์นั้นซึ่งจะมืดกว่า
ป้อนคำอธิบายภาพที่นี่

ดูสองบรรทัดถูกเลือก 0o ... นั่นอาจเป็นเหตุผล!

ดังนั้นเพียงแค่ลบออกแล้วกดปุ่ม "Enter" หรือ "Return" เพื่อเพิ่มสัญลักษณ์ "\ n" ป้อนคำอธิบายภาพที่นี่
หวังว่ามันจะช่วยคุณ


นอกจากนี้คุณอาจพบสัญลักษณ์อื่น ๆ ของ endline:
ป้อนคำอธิบายภาพที่นี่


เพียงแค่ลบมันด้วยและ XML ของคุณจะดูดีมาก!

ป.ล. ขออภัยสำหรับการเชื่อมโยงหลายมิติฉันเป็นมือใหม่และฉันไม่สามารถอัปโหลดรูปภาพหรือมากกว่า 2 ลิงก์ได้ หวังว่าคุณจะได้รับประเด็นโดยไม่มีภาพเพิ่มเติม)

PPS ขอบคุณผู้ชายที่โหวตตอนนี้ฉันสามารถให้ภาพนี้ได้


ขอบคุณมาก. ฉันไม่สามารถรับความคิดเห็นที่ได้รับการโหวตสูงสุดในการทำงาน แต่ความคิดเห็นนี้ใช้งานได้ดี
โมฆะคงที่สาธารณะ

4

ฉันมีความยากลำบากเหมือนกันและในที่สุดก็พบวิธีการแก้ปัญหา: Source/Cleanup Documentคลิกขวาในการแก้ไขให้เลือก


0

ฉันมีปัญหาเดียวกัน ขั้นตอนต่อไปนี้เป็นวิธีแก้ปัญหา ลิงก์แนะนำให้ใช้งานได้สำหรับผู้อื่น

  1. ไปที่การตั้งค่า -> คีย์
  2. ยกเลิกการเชื่อมโยงคัดลอกวางและตัด (กด "ใช้" จากนั้น "ตกลง")
  3. ทำซ้ำขั้นตอนที่ 1
  4. กู้คืนคำสั่งที่ไม่ถูกผูกไว้จากขั้นตอนที่ 2 (ฉันไม่ได้กู้คืนการตัด แต่ฉันแน่ใจว่าคุณสบายดี)

สังเกตว่ามี 2 การผูกสำหรับแต่ละคำสั่ง 3 คำสั่ง

  1. เลิกผูกฟังก์ชันรองสำหรับทั้งคัดลอกและวาง (เว้น ctl + c / ctl + v [คัดลอก / วาง] ผูกไว้)

ณ จุดนี้คุณควรตั้งค่าการผูก 2 ครั้งเพื่อทำการคัดลอก / วาง (เช่น ctl + c / ctl + v)

  1. กดใช้ -> ตกลง

การแก้ปัญหานี้ถูกพบที่นี่


0

เมื่อข้อบกพร่องนี้ปรากฏขึ้นพร้อมกับADT เวอร์ชันใหม่ (ซึ่งจำเป็นสำหรับการแก้ไขและจุดที่ไม่ควรปรากฏบ่อยครั้ง) ให้ใช้เครื่องมือ Lint เพื่อแก้ไข ..

ค้นหาในคำเตือน Lint และคลิกไอคอนหลอดไฟสีเหลืองที่มุมขวาบนของรายการคำเตือน Lint นั้น ..

หวังว่ามันจะช่วยใครได้บ้าง

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