Truy cập tệp tài nguyên string.xml từ Mã Java Android


108

Làm cách nào để bạn truy cập các giá trị trong res/values/string.xmltệp tài nguyên từ Android Activity class?

Câu trả lời:


149

Bạn có thể lấy Chuỗi bằng cách sử dụng,

getString(R.string.app_name);

Và, bạn có thể lấy chuỗi-mảng bằng cách sử dụng

String arr[] = getResources().getStringArray(R.array.planet);
for (int i = 0; i < arr.length; i++) {
        Toast.makeText(getBaseContext(),arr[i], Toast.LENGTH_LONG).show();  
}

<string-array name = "plane"> <item> Thủy ngân </item> <item> Sao Kim </item> <item>Earth</item> </string-array> cho mã này khi tôi sử dụng getString (R. string. hành tinh);
Ravikiran

Tôi đã kiểm tra câu trả lời của bạn nhưng tôi gặp lỗi ForceClose. Cảm ơn vì đã giúp
Ravikiran

ĐÂY LÀ LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): FATAL EXCEPTION: main 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: Không thể bắt đầu hoạt động ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: Chuỗi tài nguyên ID # 0x7f050000
Ravikiran

ĐÂY LÀ LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): FATAL EXCEPTION: main 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: Không thể bắt đầu hoạt động ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: Chuỗi tài nguyên ID # 0x7f050000 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): tại android.app.ActivityThread. performanceLaunchActivity (ActivityThread.java:2663)
Ravikiran

1
Lưu ý rằng getString () không phải là tĩnh. Nếu bạn muốn gán giá trị string.xml cho thuộc tính tĩnh của lớp ứng dụng của mình, hãy thực hiện việc đó trong lớp onCreate () của bạn.
KrisWebDev

44

string.xml:

<string name="some_text">Some Text</string>

Hoạt động:

getString(R.string.some_text);

@MByD Đó là lần đầu tiên tôi nhanh hơn bạn =)
Michael

<string-array name = "plane"> <item> Sao Thủy </item> <item> Sao Kim </item> <item>Earth</item> </string-array>
Ravikiran

16

Đặt mã này vào res/values/string.xml

<string-array name="planet"> 
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
</string-array>

Mã này được đặt vào res/layout/main.xmlvà xóa các widget mặc định có trong main.xml.

<ListView android:id="@+id/planet"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:entries="@array/planet"/>
</LinearLayout>

15

Nếu getString (R.string.app_name); không phù hợp với bạn, bạn có thể chuyển ngữ cảnh như sau:

context.getString(R.string.app_name);

2

Nếu bạn có ngữ cảnh của Activity, hãy đi với:

getString(R.string.app_name);

Nếu bạn không có ngữ cảnh, hãy thử bên dưới, bạn có thể lấy ngữ cảnh từ hoạt động bằng cách sử dụng Constructor.

mContext.getString(R.string.app_name);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.