2011-12-29 31 views
5

trong ứng dụng của tôi, tôi thực hiện yêu cầu web trả về một số mã kết quả, ví dụ: 105. Tôi có nguồn chuỗi trông giống như rằngTài nguyên chuỗi động của Android

<string name="r105">O.K.</string> 
<string name="r106">Something went wrong.</string> 
<string name="r333">Fatal error.</string> 

Bây giờ tôi muốn làm một cái gì đó như thế

Toast.makeText(parent.getApplicationContext(), 
     parent.getString(R.string.r+resultCode), Toast.LENGTH_LONG).show(); 

khi r+resultCode là định danh tài nguyên.

Điều này không có tác dụng. Có ý tưởng nào để làm việc này không?

+0

Ở trên mã bạn đã sử dụng tài nguyên là r105 nhưng, khi truy cập bạn viết R.string.r Có đúng không ?? –

+0

Bây giờ tôi đã hiểu câu hỏi của bạn, tôi sẽ cố gắng cho tôi 5 phút. –

Trả lời

13

Hãy thử điều này getResources().getIdentifier(name, defType, defPackage) một cách đơn giản.

Toast.makeText(this, getResources().getIdentifier("r"+resultcode, "string", 
getPackageName()), Toast.LENGTH_LONG).show(); 
+0

hoàn hảo, cảm ơn! –

0

Hãy thử như bên dưới, nó làm việc cho tôi. Sử dụng parent.getApplicationContext() cho bạn.

String str = getString(R.string.r)+resultCode; 

     Toast.makeText(getApplicationContext(), 
       str, Toast.LENGTH_LONG).show(); 
+1

Tôi nghĩ getString (R.string.r) + resultCode sẽ không hoạt động vì không có tài nguyên nào được gọi là "r" –

+0

Tôi chỉ đưa ra một phần mã của mình chứ không phải toàn bộ nội dung. Tôi đã sử dụng nó trong dự án của tôi trong tập tin xml. –

+0

@ArtWorkAD là đề xuất của tôi có phù hợp với bạn không? –

4

Bạn có thể làm điều đó bằng cách sử dụng getResources().getIdentifier(name, defType, defPackage). Một cái gì đó như thế này:

// Assuming resultCode is an int, use %s for String 
int id = getResources().getIdentifier(String.format("r%d", resultCode), 
             "string", getPackageName()); 
String result = getString(id); 
+0

Tôi gặp lỗi "% d không thể định dạng đối số java.lang.String" –

+2

Ah, tôi nghĩ resultCode là một int. Hãy thử% s cho chuỗi hoặc chỉ cần làm "r" + resultCode. – aspartame

0

Cách đơn giản để nhận ID tài nguyên từ chuỗi. Ở đây resourceName là tên của tài nguyên ImageView trong thư mục drawable được bao gồm trong tập tin XML là well.Im nhận được "id" bạn có thể sử dụng "chuỗi".

int resID = getResources().getIdentifier(resourceName, "id", getPackageName()); 
ImageView im = (ImageView) findViewById(resID); 
Context context = im.getContext(); 
int id = context.getResources().getIdentifier(resourceName, "drawable", 
context.getPackageName()); 
im.setImageResource(id); 
Các vấn đề liên quan