android XML में उपयोग करने के लिए Plurals से एक स्ट्रिंग प्राप्त करना?




android-xml (4)

मैं अपने कोड को सरल बनाने के लिए Plurals का उपयोग कर रहा हूं। जैसे, मेरे पास होता था

<string name="cat">Cat</string>
<string name="cats">Cats</string>

कई तार के बजाय बहुवचन का उपयोग करना, मेरे पास अब है

<plurals name="cats">
    <item quantity="one">Cat</item>
    <item quantity="other">Cats</item>
</plurals>

हालाँकि, मैंने अपने XML में शीर्षक या सारांश के रूप में उपयोग करने के लिए स्ट्रिंग्स प्राप्त किया। जैसे,

android:title="@string/cats"

एक बहुवचन के पक्ष में उस स्ट्रिंग को हटाने के बाद, मैं अब अनिश्चित हूं कि एक्सएमएल से मेरे स्ट्रिंग को कैसे पुनः प्राप्त किया जाए। मैंने एक भोली कोशिश की

android:title="@plurals/cats"

लेकिन यह सिर्फ मुझे Cats (या Cat ) के बजाय @1234567890 देता है।

किसी को पता है कि क्या यह संभव है XML से एक बहुवचन के एक स्ट्रिंग को पुनः प्राप्त करने के लिए?


आप अपने स्ट्रिंग संसाधनों को छोड़कर जहां वे हैं और आपके बहुवचन संसाधनों में उनका जिक्र कर रहे हैं, आपको प्लुरल के रन-टाइम लाभ और स्ट्रिंग संसाधनों के स्थैतिक लाभ हो सकते हैं।

developer.android.com/guide/topics/resources/… (जोर) से।

<item>

एक बहुवचन या एकवचन स्ट्रिंग। मान किसी अन्य स्ट्रिंग संसाधन का संदर्भ हो सकता है। एक तत्व का एक बच्चा होना चाहिए। सावधान रहें कि आपको एपॉस्ट्रॉफ़ और उद्धरण चिह्नों से बचना चाहिए। ठीक से स्टाइल करने और अपने स्ट्रिंग्स को फ़ॉर्मेट करने के बारे में जानकारी के लिए, नीचे प्रारूपण और स्टाइलिंग देखें। उदाहरण:

<string name="cat">Cat</string>
<string name="cats">Cats</string>

<plurals name="cats">
    <item quantity="one">@string/cat</item>
    <item quantity="other">@string/cats</item>
</plurals>

अब आप XML फ़ाइलों में android:title="@string/cats" का उपयोग कर सकते हैं और उपयोग भी कर सकते हैं

getQuantityString(R.plurals.cats, numberOfCats)

चलने के समय पर।


आपको इसे कोड द्वारा सेट करना होगा:

...setText(yourContext.getResources().getQuantityString(R.plurals.cats, catsCountVar));

यहां आपके कस्टम व्यू की विशेषता के रूप में बहुवचन संसाधन का उपयोग करने का एक तरीका है।

src / मुख्य / res / xml / layout.xml

<com.mypackage.MyView
    app:foo="@plurals/cats"/>

src / मुख्य / res / values ​​/ attrs.xml

<resources>
    <declare-styleable name="MyView">
        <attr name="foo"/>
    </declare-styleable>
</resources>

MyView.java

public class MyView extends View {

    private int fooResId;
    private int quantity;

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyView);
        fooResId = a.getResourceId(R.styleable.MyView_foo, 0);
        a.recycle();
    }

    // this will return "Cat" or "Cats" depending on the value of quantity
    private String getFooString() {
        return getContext().getResources().getQuantityString(fooResId, quantity);
    }
}

यदि आपके स्ट्रिंग में एक नंबर के साथ स्ट्रिंग स्वरूपण शामिल है, तो आपको पूर्णांक चर को दो बार भेजने की आवश्यकता है, उदाहरण

strings.xml

<resources>
    <plurals name="numberOfMinute">
        <item quantity="one">%d minute</item>
        <item quantity="other">%d minutes</item>
    </plurals>
</resources>

जावा में

int min = getNumberOfMinute();
Resources res = getResources();
String formattedStr = res.getQuantityString(R.plurals.numberOfMinute, min, min); //this will return "20 minutes" or "1 minute" depending on cariable




android-xml