2013-04-09 9 views
24

Im vừa bắt đầu tạo một ứng dụng Android đơn giản với việc sử dụng Xamarin sử dụng VS2012. Tôi biết có một loại Tài nguyên chỉ dành cho chuỗi. Trong thư mục tài nguyên của tôi, tôi có một tập tin xml như thế này:(Android Xamarin) Nhận giá trị chuỗi tài nguyên thay vì int

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="RecordsTable">records</string> 
    <string name="ProjectTable">projects</string> 
    <string name="ActivitiesTable">activities</string> 
</resources> 

Trong mã của tôi, tôi muốn sử dụng các giá trị của những tài nguyên như:

string recordTable = Resource.String.RecordsTable; //error, data type incompatibility 

Tôi biết rằng Resource.String.<key> trả về một số nguyên vì vậy tôi không thể sử dụng mã ở trên. Tôi hy vọng rằng biến số recordTable sẽ có giá trị là records.

Có cách nào tôi có thể sử dụng giá trị của chuỗi tài nguyên đó cho các biến chuỗi của mã không?

+0

Chỉ cần có được 'int', và sau đó chuyển nó thành một 'Chuỗi'? – Bigflow

+2

xin lỗi, tôi không thể hiểu những gì bạn đang đề xuất. –

Trả lời

33

thử nó như sử dụng Resources.GetString để nhận chuỗi từ Tài chuỗi

Context context = this; 
// Get the Resources object from our context 
Android.Content.Res.Resources res = context.Resources; 
// Get the string resource, like above. 
string recordTable = res.GetString(Resource.String.RecordsTable); 
+1

hmm, tôi không thể thấy phương pháp GetString. Và để có thể sử dụng đối tượng Tài nguyên, tôi cần thêm không gian tên Android.Content.Res. –

+0

@ eaon21: có xem [Tài nguyên.GetString] (http://docs.mono-android.net/?link=M%3aAndroid.Content.Res.Resources.GetString%28int%29#) –

+0

Tôi đã thấy! thanks .. tuy nhiên, tôi đã sử dụng Resources.System.GetString (id) ... Resources.GetString không tồn tại: ( –

-5
int int_recordTable = Resource.String.RecordsTable; 

String recordTable = (String.valueOf(int_recordTable)); //no more errors 

Lấy int, sau đó thay đổi nó vào một String

+6

Vì OP đang sử dụng Xamarin nên có lẽ anh ta đang mã hóa .Net, chứ không phải Java. Ngoài ra tôi không nghĩ rằng ông chỉ muốn chuyển đổi một int vào một String –

13

Nó đáng chú ý là bạn làm không cần phải tạo một thể hiện của Resources để truy cập vào bảng tài nguyên. Này hoạt động tốt như nhau:

using Android.App; 

public class MainActivity : Activity 
{ 
    void SomeMethod() 
    { 
     string str = GetString(Resource.String.your_resource_id); 
    } 
} 

GetString(), được sử dụng theo cách này, là một phương pháp xác định trên lớp trừu tượng Context. Bạn cũng có thể sử dụng phiên bản này:

using Android.App; 

public class MainActivity : Activity 
{ 
    void SomeMethod() 
    { 
     string str = Resources.GetString(Resource.String.your_resource_id); 
    } 
} 

Resources, được sử dụng theo cách này, là một tài sản trên lớp ContextWrapper, mà Activity kế thừa từ lớp ContextThemeWrapper read-only.

+0

nhiều cách sạch hơn – Joseph

2

Nếu bạn đang không ở trong một hoạt động hay bối cảnh khác, bạn sẽ nhận được bối cảnh và sử dụng nó để có được những tài nguyên và PackageName, như ví dụ sau:

int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName); 
imageView.SetImageResource(resID);