Di chuyển và làm biến mất các dòng mã; sự cố với Trình soạn thảo XML của Eclipse


95

Đôi khi mã của tôi tự di chuyển hoặc chỉ biến mất trong trình soạn thảo XML của Eclipse.

Rất tiếc!

Khi tôi đánh dấu mã bị ảnh hưởng, các dòng được đánh dấu sẽ cố gắng sửa chính chúng. Nhưng khi tôi cuộn hoặc kéo chuột theo hướng ngược lại, mã lại dịch chuyển. Về bản chất, tôi sẽ có các dòng mã lặp lại, bị thiếu bị hỏng được hiển thị từ một tệp không có lỗi. Các tập tin ảnh hưởng làm biên dịch và nếu tôi đóng / mở lại họ vấn đề này sẽ biến mất, cho thời điểm này. Bất kỳ ý tưởng về những gì đang xảy ra?


Ngoài ra: Jeff Axelrod đã cung cấp một liên kết đến một báo cáo lỗi mới với Google.


Nghe có vẻ như một vấn đề đồ họa đối với tôi. Phiên bản hệ điều hành và Eclipse của bạn là gì?
sd

Vista và Eclipse 3.7.2 Tôi đã tìm kiếm xung quanh trang web lỗi Eclipse, nhưng không may mắn. Có lẽ tôi thiếu một từ khóa mô tả?
Sam

2
Im có cùng một vấn đề. Win7 Pro 32-bit và Eclipse 3.7.2 với android 17.0.0 ... Cùng một kịch bản như bạn mô tả trong câu trả lời của mình. Cũng không thể tìm thấy bất kỳ báo cáo lỗi nào.
Pat

Tôi cũng đang trải qua điều này, nó khiến tôi phát điên ... Trong trường hợp của tôi, đang sử dụng Windows XP với chàm nhật thực. Vấn đề này luôn luôn xảy ra tôi chuyển từ bố cục đồ họa để trình biên tập xml
mdelolmo

1
Báo cáo lỗi Android được nộp tại đây .
Jeff Axelrod,

Câu trả lời:


32

Lỗi này (cuối cùng) đã được sửa trong ADT 21. Bản sửa lỗi hiện đã có trong ADT 21 Preview 9, được đăng vài phút trước, tại đây: https://android-review.googlesource.com/#/c/44936/1

Lý do bạn nhận được các hiện vật trực quan kỳ lạ là nếu một tệp chứa các kết thúc dòng DOS bị hỏng (nhiều ký tự xuống dòng mà không có dòng mới cho mỗi ký tự xuống dòng), Eclipse sẽ rất nhầm lẫn. Đó là vấn đề Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

Có hai phần cần khắc phục: (1) Đầu tiên, ADT đã được sửa để nó không còn đưa các chuỗi \ r \ r này vào tài liệu nữa. Điều này đảm bảo rằng bạn không nhận được tài liệu mới gây ra hành vi chỉnh sửa kỳ lạ, nhưng nó không khắc phục hồi tố các tài liệu cũ hơn với các kết thúc dòng này, vì vậy nếu bạn mở chúng, bạn vẫn nhận được hành vi chỉnh sửa kỳ lạ.

(2) Thứ hai, có một kiểm tra xơ vải mới tìm kiếm các kết thúc dòng bị hỏng trong tài liệu. Quá trình này chạy tăng dần, vì vậy nếu bạn chỉnh sửa tệp XML gặp sự cố này, ADT sẽ thêm dấu lỗi cho sự cố này - cùng với một bản sửa lỗi nhanh để thực hiện phẫu thuật trên tài liệu để khắc phục sự cố.

Tóm lại: Nhận ADT 21 Xem trước 9; chạy Lint trên các dự án của bạn và tìm kiếm bất kỳ khiếu nại nào về các tệp chứa phần cuối dòng bị hỏng và nếu tìm thấy bất kỳ vấn đề nào, hãy áp dụng quickfix. Từ bây giờ, các chỉnh sửa thêm với trình chỉnh sửa bố cục sẽ giữ cho các tệp được định dạng nhất quán.

FYI, bản sửa lỗi liên quan ở đây: https://android-review.googlesource.com/#/c/44936/

Hướng dẫn dễ dàng cập nhật Công cụ SDK và plugin Eclipse ADT tại đây: http://tools.android.com/preview-channel

- Tor (từ nhóm công cụ Android)


Cảm ơn bạn đã dành thời gian trả lời trực tiếp, cho đến nay nó hoạt động rất tốt! Đối với những người không muốn tải xuống mã nguồn và xây dựng các công cụ cục bộ, chỉ cần làm theo hai bước sau để cài đặt phiên bản được tạo sẵn. (Đọc Cài đặt Plugin Eclipse nếu bạn quên cách thực hiện bước hai.)
Sam

Làm việc tuyệt vời cho tôi. Tôi đang ở Eclipse Juno. Chỉ cần đi tới Trợ giúp> Cài đặt phần mềm mới> Cái gì đã được cài đặt? Sau đó, tôi đã chọn tất cả những thứ Android từ Google, chọn Cập nhật và bây giờ cuộc sống đã tốt trở lại.
Rodrigo-Silveira

32

Sau một số thử nghiệm, tôi nhận thấy rằng tùy chọn "Tự động định dạng XML do trình chỉnh sửa bố cục trực quan chỉnh sửa" (trong Tùy chọn | Android | Trình chỉnh sửa) có thể là thủ phạm ở đây.

Với các thử nghiệm của mình, tôi nhận thấy rằng việc thay đổi một thuộc tính (chẳng hạn như layout_gravity) trong khi ở chế độ thiết kế Bố cục Đồ họa luôn làm rối loạn hiển thị trực quan của tệp khi tôi quay lại chế độ XML (văn bản) khi tùy chọn này BẬT nhưng rằng tôi không có vấn đề gì khi nó tắt.

Nếu bạn muốn định dạng XML khi trở về từ chế độ thiết kế Bố cục Đồ họa, chỉ cần sử dụng phím tắt Ctrl+ Shift+ F. Ngoài ra, tôi không thấy bất kỳ vấn đề nào với việc sử dụng tùy chọn "Định dạng khi Lưu"; ngay cả khi tôi sử dụng nó trong chế độ Bố cục Đồ họa; vì vậy bạn có thể sử dụng Ctrl+ Sthay thế trong khi bạn vẫn ở chế độ Bố cục Đồ họa để lưu và định dạng XML của mình.

Tôi đã thử các tùy chọn trình chỉnh sửa khác như "Hiển thị chỉ báo phạm vi" hoặc "Sử dụng ký tự để hiển thị các thay đổi trong thước dọc" nhưng tôi không thấy bất kỳ sự khác biệt nào trong hành vi khi kích hoạt hoặc hủy kích hoạt các tùy chọn này.

Cuối cùng, để sửa lỗi hiển thị trực quan của tệp khi tệp bị hỏng; Tôi thấy rằng việc sử dụng phím tắt: Ctrl+ A, Ctrl+ C, Ctrl+ Vdễ dàng hơn một chút so với việc đóng / mở lại tệp. Điều này tương đương với việc thực hiện Chọn tất cả, Sao chép, Dán; sao chép hiệu quả toàn bộ tệp XML trên chính nó.


4
Sử dụng phiên bản ADT 20120624 ... và Indigo Service Release 2 và SDK Tools Rev 20, và với "Tự động định dạng XML ..." không hoạt động, tôi vẫn có các dòng biến mất và chuyển thành các dòng khác.
Brian

1
Hãy thử với Juno. Tại thời điểm này, tôi không thể tái tạo lỗi này với Juno nữa. Tuy nhiên, Juno cũng có những lỗi khác. Ví dụ: tại một thời điểm với hai tệp XML được mở, phím xóa đã hoạt động trên tệp sai: cố gắng xóa một ký tự trong một tệp thay vào đó là xóa một ký tự trong tệp khác. Tuy nhiên, phím Backspace vẫn OK. Tôi cũng sẽ phải thay đổi cấu hình eclipse.ini mặc định vì đôi khi, tôi nhận được thông báo lỗi về việc thiếu dung lượng heap khi cố gắng chạy EXE trên trình giả lập. Bạn đã kiểm tra cả phiên bản 32 bit và 64 bit chưa?
SylvainL

Tôi tin rằng tôi chỉ đang sử dụng phiên bản 32-bit.
Brian

Đây là câu trả lời tốt nhất cho đến nay vì nó làm giảm tần suất lỗi này xảy ra, nhưng nó không loại bỏ nó nên câu hỏi vẫn còn bỏ ngỏ.
Sam

1
Đôi khi tôi vẫn gặp sự cố này nhưng không phải với Trình chỉnh sửa đồ họa: thay vào đó, đó là với tệp AndroidManifest.xml; sử dụng một trình soạn thảo khác. Đây là với phiên bản mới nhất - Juno nhưng tôi phải thừa nhận rằng gần đây, tôi không có nhiều thời gian để làm việc trên ứng dụng Android của mình nên tôi không thể chắc chắn.
SylvainL

12

Vẫn gặp lỗi này trên Juno (Eclipse 4.2.0, ADT r20).

Cách khắc phục của tôi: Đi tới Window -> Preferences -> Android -> Editors. Tôi đã chọn cả "Định dạng XML bằng cách sử dụng Android XML chuẩn ...""Sử dụng cài đặt Eclipse để thụt lề ...." . Điều này giải quyết các vấn đề đối với tôi.


1
Không. Chỉ cần bỏ chọn "Định dạng XML sử dụng Android XML chuẩn ...". Nó sẽ sửa lỗi XML kỳ lạ, nhưng bạn cũng phải tuân theo quy ước Eclipse.
tom_mai78101

Cá nhân tôi thích quy ước Eclipse hơn; Android không phân biệt giữa dấu ngoặc đóng thẻ mở ( >) và dấu ngoặc đóng thẻ độc lập ( />) để xác định xem có đứng trước dấu cách hay không (tùy chọn được giới hạn cho cả hai hoặc không). Có vẻ như một vấn đề nhỏ nhặt, nhưng không hiểu sao tôi lại thấy nó rất khó chịu.
JAB

12

EDIT: chứa phương thức nhanh hơn, vì vậy nó đã được đưa lên đầu:

Ctrl+ F -> điền như vậy:

  1. "Tìm"          "\ r \ r \ n"
  2. "Thay thế"    "\ r \ n"
  3. Chuyển "Biểu thức chính quy" thành BẬT
  4. hit "Thay thế tất cả" nút
  5. Ctrl+A
  6. bỏ chọn văn bản.
  7. hạnh phúc nhé =)

Ban đầu là ở đây: Chỉ cần không ẩn vấn đề đó, nếu bạn có thể khắc phục nó. Đôi khi, việc đóng tệp XML cũng không giúp được gì.

Để khắc phục nó, hãy xem lý do của nó. Trước hết, Bật "Hiển thị ký tự khoảng trắng" ( Cửa sổ> Tùy chọn> Chung> Trình chỉnh sửa> Trình chỉnh sửa văn bản> Hiển thị ký tự khoảng trắng )

Sau đó quay lại tệp XML của bạn.

nhập mô tả hình ảnh ở đây

Trong hình ảnh được chia tỷ lệ, bạn có thể thấy sự khác biệt của các màu ký hiệu "\ n";

sau đó chỉ cần đặt con trỏ đến biểu tượng đó, biểu tượng này tối hơn.
nhập mô tả hình ảnh ở đây

nhìn xem, hai dòng được chọn 0o ... đó có thể là lý do!

vì vậy chỉ cần xóa nó và nhấn nút "Enter" hoặc "Return" để thêm ký hiệu "\ n". nhập mô tả hình ảnh ở đây
Hy vọng nó sẽ giúp bạn.


Ngoài ra, bạn có thể tìm thấy biểu tượng khác của dòng cuối:
nhập mô tả hình ảnh ở đây


Chỉ cần xóa nó đi, và XML của bạn sẽ có một giao diện tuyệt vời!

PS xin lỗi vì siêu liên kết, tôi là người mới và tôi không thể tải lên hình ảnh hoặc nhiều hơn 2 liên kết. vì vậy hy vọng bạn sẽ nhận được điểm mà không có hình ảnh bổ sung;)

PPS Thx cho người bình chọn, bây giờ tôi có thể cung cấp điều này với hình ảnh.


Cảm ơn rất nhiều. Tôi không thể nhận được bình luận được bình chọn cao nhất để làm việc nhưng điều này đã hoạt động tuyệt vời.
public static void

4

Tôi đã gặp khó khăn tương tự và cuối cùng đã tìm ra giải pháp: Nhấp chuột phải vào trình chỉnh sửa, chọn Source/Cleanup Document.


0

Tôi gặp vấn đề tương tự. Các bước sau đây là giải pháp. Liên kết gợi ý nó đã làm việc cho những người khác.

  1. Đi tới Tùy chọn -> phím
  2. Bỏ liên kết sao chép, dán và cắt (nhấn "áp dụng", sau đó nhấn "ok")
  3. lặp lại bước 1
  4. Khôi phục các lệnh chưa liên kết từ bước 2 (Tôi đã không khôi phục phần cắt, nhưng tôi chắc rằng bạn sẽ ổn)

Lưu ý rằng có 2 ràng buộc cho mỗi lệnh trong số 3 lệnh

  1. Bỏ liên kết chức năng phụ cho cả sao chép và dán (giữ nguyên liên kết ctl + c / ctl + v [copy / paste])

Tại thời điểm này, bạn chỉ nên đặt 2 liên kết để thực hiện sao chép / dán (tức là ctl + c / ctl + v)

  1. Nhấn áp dụng -> OK

Giải pháp này đã được tìm thấy ở đây .


0

Khi lỗi này xuất hiện với các phiên bản ADT mới (bắt buộc phải sửa và lỗi không nên xuất hiện thường xuyên) chỉ cần sử dụng công cụ Lint để sửa nó ..

Tìm nó trong cảnh báo Lint và nhấp vào biểu tượng bóng đèn màu vàng ở góc trên bên phải của danh sách cảnh báo Lint đó ..

Hy vọng nó sẽ giúp ai đó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.