2011-12-08 24 views
7

Tôi đã tạo một bộ chủ đề mới cho một ứng dụng của tôi và quyết định tôi không cần ứng dụng cũ nữa. Vì vậy, tôi đã sao chép các tệp hình ảnh mới của mình qua các tệp cũ, thay thế tất cả chúng. Tôi đã làm điều này cho tất cả các thư mục drawables của tôi. Tôi sau đó tạo lại R.java chỉ trong trường hợp và xây dựng lại ứng dụng của mình.Các bản vẽ không thay đổi sau khi được thay thế bằng những người khác trong các thư mục

Vì một lý do nào đó, nó sẽ chọn hình ảnh cũ và hiển thị những hình ảnh đó. Được rồi, tôi nghĩ, phải là thứ gì đó trong bộ nhớ/bộ nhớ cache. Tôi sẽ chỉ xóa hình ảnh giả lập của tôi và thử lại.

Sau khi làm như vậy, ứng dụng vẫn sử dụng ảnh cũ. Tôi nghĩ rằng tôi đã có một sai lầm và kiểm tra các hình ảnh trong Eclipse, nhưng nó cho thấy những hình ảnh mới ở đó. Sau đó tôi đã lấy các vấn đề quyết liệt và xóa các thư mục có thể kéo. Ofcourse điều này gây ra dự án của tôi để freak ra vì vậy tôi nhanh chóng thêm các hình ảnh mới mong muốn và xây dựng lại dự án. Không có lỗi nào xuất hiện và tất cả các hình ảnh đã xuất hiện thay đổi trong Eclipse.

Nhưng khi chạy ứng dụng, ảnh cũ vẫn hiển thị. Ngoại trừ một số phần của ứng dụng. Trong số 70 hình ảnh tôi đã sử dụng, chỉ có 2 ảnh hiện đang hiển thị phiên bản mới. Tất cả những người khác vẫn đang hiển thị những hình ảnh cũ.

Điều gì có thể xảy ra ở đây? Tôi đã thử khởi động lại trình giả lập, tạo lại dự án mới bằng cách sử dụng mã nguồn cũ, khởi động lại điện thoại, xóa tất cả dữ liệu ứng dụng trước khi cài đặt ứng dụng, xóa tất cả hình ảnh và thay thế chúng bằng công việc.

Làm thế nào một ứng dụng có chứa hình ảnh mới, đang chạy trên trình mô phỏng hoàn toàn mới, vẫn hiển thị hình ảnh đã bị xóa ít nhất một giờ trước đó?

+0

Bạn có làm mới nhật thực không? (bạn có thể chọn thư mục res của bạn trong nhật thực và nhấn f5) – Jave

+0

Quên để thêm vào danh sách, nhưng có tôi đã làm. Đó là điều đầu tiên tôi làm. Tôi đã thử tất cả các tùy chọn mà Eclipse có thể ném vào bạn về các dự án làm mới/sửa chữa/xây dựng. Không có gì thay đổi kết quả mặc dù trình xây dựng GUI cho thấy các bức ảnh mới chẳng hạn. –

+0

Tôi cho rằng bạn cũng đã thử một trình mô phỏng khác, chỉ trong trường hợp? hoặc trên một thiết bị thực? – Jave

Trả lời

22

Xóa bin-thư mục để xóa dữ liệu đã được biên dịch cũ.

+0

Nếu không có gì trong thư mục bin của bạn thì bạn cũng có thể thử xóa thư mục 'gen' của mình. – darren

+1

nếu bạn không thoải mái với việc xóa toàn bộ thư mục bin, hãy thử tệp 'resources.ap_' - đã làm việc cho tôi! – danj1974

+0

Tôi chỉ đơn giản là xóa thư mục 'bin /' và điều này giải quyết được vấn đề – William

5

TL; DR: kiểm tra các thư mục draw-xxxdpi khác của bạn cho các phiên bản cũ!

Tôi đã gặp phải vấn đề này và không có giải pháp nào ở đây được trợ giúp. Nó khiến tôi phát điên.

Tôi đã thay thế res/drawable-hdpi/file.jpg bằng tệp.png. Đó là một phần mở rộng khác và có nội dung khác nhau. Eclipse đã nhìn thấy phiên bản mới, nhưng không có số lượng làm sạch/làm mới, gỡ cài đặt ứng dụng hoặc xóa thư mục bin/gen theo cách thủ công khiến thiết bị nhìn thấy phiên bản mới.

Sau đó, tôi nhận ra rằng tôi đã có các phiên bản khác trong:

  • res/drawable-ldpi/file.jpg
  • res/drawable-mdpi/file.jpg
  • res/drawable-xhdpi/file.jpg

Khi tôi đã thay thế các phiên bản đó bằng phiên bản đã đổi kích thước của tệp.png, thì việc chạy lại ứng dụng đã khắc phục sự cố đơn giản. Có vẻ như trình biên dịch tài nguyên Android đã thấy phiên bản "jpg" của tệp đầu tiên trong một thư mục có thể vẽ khác, sau đó bỏ qua phiên bản "png" tiếp theo trong drawable-hdpi. Mặc dù thiết bị đang chạy là hdpi, bản vẽ có thể rút ra từ một thư mục dpi khác.

0

Nếu kiểm tra các thư mục có thể vẽ khác cho phiên bản cũ và xóa thư mục bin và gen của bạn không hoạt động.

Tìm kiếm: setImageResource(R.drawable.YourPNG) trong mã của bạn có thể ghi đè cấu hình có thể kéo được định cấu hình trong xml từ: res/layout/folder.

0

Android Studio: Nếu CleanBuild việc doesn't thử với

Đến File>Invalidate Caches/Restart

hoặc File>Synchronize

cả làm việc cho tôi.

0

Giải pháp dễ dàng hơn là gỡ cài đặt ứng dụng khỏi trình giả lậpcủa bạn sau đó cài đặt lại bằng cách chạy lại ứng dụng từ Android Studio. (Điều này sẽ buộc mọi thứ phải cập nhật)

Đây luôn là vấn đề lạ nhưng tôi đã tìm ra hình ảnh cũ từ máy tính của tôi, nhưng hình ảnh cũ sẽ vẫn hiển thị trên ứng dụng (không thể). Vì vậy, tôi đã tìm ra vấn đề là với trình mô phỏng. (kể từ khi trình mô phỏng có bộ nhớ riêng)

Nếu tên tệp và tên tệp vẫn giữ nguyên, tôi đoán Android không cập nhật ứng dụng của bạn, mặc dù hình ảnh mới có kích thước khác. Kỳ dị.

Các vấn đề liên quan