2011-07-25 72 views
13

đây là mã của tôi, Eclipse không hiển thị bất kỳ lỗi nào, chương trình làm việc tốt, nhưng nó đơn giản không làm chính xác những gì tôi muốn :)so sánh hai chuỗi không hoạt động trong android

View image_view_danger_rate = (ImageView) findViewById(R.id.origin); 
    View image_view_origin = (ImageView) findViewById(R.id.danger_rate); 

    String entry_tag = (String) descriptionResultView.findViewById(resID).getTag(); 

    String dangerous = "dangerous"; 
    String not_dangerous = "not_dangerous"; 

    if (entry_tag == dangerous) { 
     image_view_danger_rate.setBackgroundResource(R.drawable.attention); 
    }else if (entry_tag == not_dangerous) { 
     image_view_danger_rate.setBackgroundResource(R.drawable.its_ok); 
     image_view_origin.setBackgroundResource(R.drawable.artificial); 
    } 

Các ứng dụng nên chọn giữa hai hình ảnh để bật lên trên màn hình, tùy thuộc vào thẻ được lưu trữ trong tệp xml. Vì vậy, nếu thẻ cho biết "nguy hiểm", thì sẽ được hiển thị hình ảnh "chú ý". Nếu thẻ cho biết "not_dangerous", phải có hình ảnh "its_ok".

Bây giờ, hiển thị hình ảnh mà không có một phép so sánh hoạt động hoàn hảo.

Nếu tôi in các thẻ dưới dạng chuỗi, nó hoạt động, nó in chính xác "nguy hiểm" hoặc "không phải là nguy hiểm", tùy thuộc vào thẻ.

Nhưng nếu có so sánh nếu như được hiển thị ở trên, thì không có gì xảy ra, không có hình ảnh nào được hiển thị.

Hãy ai giúp đỡ !! =)

+0

+1 cho câu hỏi phức tạp và đầy đủ. – Marcelo

+0

Câu hỏi này đã được hỏi trên trang này nhiều hơn số lần tôi quan tâm. Vui lòng sử dụng chức năng tìm kiếm. – Woot4Moo

+0

@ Woot4Moo Sao chép không phải là xấu. http://blog.stackoverflow.com/2010/11/dr-strangedupe-or-how-i-learned-to-stop-worrying-and-love-duplication/ – Marcelo

Trả lời

34

Sử dụng string1.equalsIgnoreCase("something) hoặc .equals("Something");

Với == (cho dây) trong java bạn đang so sánh họ là của cùng một tài liệu tham khảo. Giống như bạn đã làm là thử nghiệm nếu cả hai đều là các đối tượng dây.

+0

Tôi vừa học được điều gì đó rất quan trọng! = D nó làm việc cho tôi ... cảm ơn bạn vì câu trả lời nhanh này! – Silvan

5

Sử dụng

entry_tag.equals(dangerous) 

bạn đang so sánh các đối tượng String thực tế, chứ không phải nội dung của họ. Trong Java, các toán tử không bị quá tải nên không thể sử dụng == để so sánh các chuỗi.

+0

nhờ tất cả các bạn, đó là giải pháp! – Silvan

1

Trong Java, nếu bạn muốn so sánh Strings, bạn cần phải sử dụng equals():

if (entry_tag.equals(dangerous)) { 
} 
9

Trong java, a == b được sử dụng để so sánh tài liệu tham khảo 2, không phải là đối tượng chính mình.

vì vậy nếu bạn có 2 chuỗi mà bạn muốn so sánh, hãy sử dụng phương thức equals() trên String. ví dụ:

boolean resultOfComparison=stringA.equals(stringB); 
+0

cảm ơn tất cả các bạn, đó là giải pháp! – Silvan