2015-04-09 21 views
8

Mới đối với Android ở đây, vì vậy tôi xin lỗi nếu đây là một câu hỏi đơn giản.Sử dụng chuỗi từ XML tài nguyên trong Chuyển đổi?

Tôi đang cố sử dụng công tắc dựa trên tài nguyên chuỗi trong XML của mình. Nó sẽ trông giống như thế này:

switch (myStringVariable) { 
    case getResources().getString(R.string.first_string): 
     break; 
    case getResources().getString(R.string.second_string): 
     break; 
    case getResources().getString(R.string.third_string): 
     break; 
    default: 
     break; 
} 

Thật không may, điều này sẽ không hoạt động. Lỗi mà tôi nhận được là "Yêu cầu biểu thức liên tục".

Có cách nào bán thanh lịch để đi về việc này, mà không cần phải làm điều gì đó như tạo 3 đối tượng String và gán tài nguyên chuỗi cho từng đối tượng? Tôi cảm thấy như tôi đang thiếu một cái gì đó rõ ràng, vì vậy bất kỳ sự trợ giúp sẽ là tuyệt vời!

Cảm ơn :)

+3

các 'nếu khác if' xây dựng – Blackbelt

+2

Gán chuỗi các đối tượng những giá trị này vẫn doesn 't làm việc, phải không? Các giá trị được quyết định trong thời gian chạy, không phải thời gian biên dịch? –

Trả lời

3

Vâng, trước hết, phiên bản của Java rằng Android được dựa trên không hỗ trợ báo cáo Chuỗi chuyển đổi, vì vậy nói chung bạn phải sử dụng if/else khối để thay thế.

EDIT: báo cáo Chuỗi chuyển đổi được hỗ trợ nếu bạn sử dụng JDK 1.7 và sau

Tôi không chắc chắn những gì trường hợp sử dụng của bạn, nhưng nếu bạn có ID tài nguyên của myStringVariable, mà là một int, bạn có thể thực hiện chuyển đổi qua điều đó:

switch (myStringResId) { 
case R.string.first_string: 
    break; 
case R.string.second_string: 
    break; 
case R.string.third_string: 
    break; 
default: 
    break; 
} 
+3

* không hỗ trợ lệnh chuyển đổi chuỗi *, điều đó không đúng – Blackbelt

+0

Oh wow, cảm ơn vì đã chỉ ra điều đó. Thời gian qua tôi đã cố gắng làm một chuyển đổi String trên Android là vào năm 2012 trước khi chúng tôi có thể biên dịch với JDK 1.7. – npace

3

Bạn không bỏ lỡ điều gì đó liên quan đến Android nhưng liên quan đến Java.

Kiểm tra câu trả lời này về cách Java quản lý báo cáo kết quả Switch:

https://stackoverflow.com/a/3827424/2823516

Bạn sẽ phải sử dụng các giải pháp phi thanh lịch mà bạn đề cập. Nhưng ai nói là không thanh lịch? Là những gì bạn nên làm, và điều đó làm cho nó thanh lịch.

2

Vâng, nó không phải là cách thanh lịch nhất, nhưng bạn có thể sử dụng nếu - else if báo cáo thay vì chuyển đổi - trường hợp:

if (myStringVariable.eqals(getString(R.string.first_string))) { 
    // do something 
} else if (myStringVariable.eqals(getString(R.string.second_string))) { 
    // do something 
} else if (myStringVariable.eqals(getString(R.string.third_string))) { 
    // do something 
} 
Các vấn đề liên quan