Android: จำนวนเต็มจากทรัพยากร xml


110

ฉันจะมีการปรับเปลี่ยนทรัพยากร XML ของฉันหรือสิ่งที่ไฟล์ XML ฉันจะต้องสร้างการเข้าถึงจำนวนเต็มค่าในลักษณะเดียวกับที่คุณเข้าถึงค่าสตริงด้วยR.string.some_string_resource?

ตัวอย่างเช่นในรหัสฉันต้องการพูดว่า:

ProgressDialog progressBar = new ProgressDialog(getContext());
progressBar.setMax(getInteger(R.integer.maximum));

เป็นไปได้ไหม?

คำตอบ:


263

ใช่เป็นไปได้มันจะมีลักษณะดังนี้:

  1. สร้างไฟล์รีซอร์ส xml ในโฟลเดอร์/res/values/ชื่อ integers.xml

    คุณมีอิสระที่จะตั้งชื่ออะไรก็ได้ตามที่คุณต้องการ แต่เลือกชื่อที่ชัดเจน

  2. ในไฟล์ทรัพยากรนั้นให้สร้างค่าจำนวนเต็มของคุณ

    ไฟล์ของคุณจะมีลักษณะดังนี้:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>    
        <integer name="maximum">100</integer>
        ...
    
    </resources>
  3. อ้างอิงค่าจำนวนเต็มในโค้ด Java ดังนี้:

    มันแตกต่างจากทางตรงgetString()คุณต้องอ้อมเล็กน้อย

    ProgressDialog progressBar = new ProgressDialog(getContext());
    int max = getContext().getResources().getInteger(R.integer.maximum);
    progressBar.setMax(max);

1
นั่นคือค่าสองเท่าไม่ใช่จำนวนเต็ม บางทีคุณอาจถามในคำถาม StackOverflow แยกต่างหาก
Terry

1
@Terry นี่เป็นวิธีที่ต้องการในการใช้จำนวนเต็มใน Android ฉันมักจะใช้รหัสยากในโค้ดเอง คำแนะนำของคุณคืออะไร?
capt.swag

2
@ capt.swag โดยปกติแล้วคุณจะใส่จำนวนเต็มฮาร์ดโค้ดเป็นค่าคงที่ในโค้ดในแต่ละคลาสตามความเหมาะสม แต่ถ้าคุณต้องการมีค่าคงที่ต่างกันสำหรับเลย์เอาต์ที่แตกต่างกัน (เช่นจำนวนคอลัมน์สำหรับกริด) คุณจะใช้ไฟล์ XML เพื่อปรับค่าคงที่ให้เข้ากับความกว้างต่างๆของหน้าจอ หวังว่าจะช่วยได้นะ
rommex

1
ฉันสามารถใช้ค่าจำนวนเต็มโดยตรงใน XML ได้หรือไม่
Arbaz ใน

1
@ capt.swag ใช่นั่นเป็นวิธีที่ต้องการ
Bato-Bair Tsyrenov

5

คุณต้องเพิ่มไฟล์ integers.xml ในโปรเจ็กต์ของคุณ

ใส่คำอธิบายภาพที่นี่

แล้ว

ใส่คำอธิบายภาพที่นี่

และใน integers.xml เพิ่มสิ่งนี้

<integer name="maximum">5</integer>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.