android में string.xml से value कैसे पढ़ें?


368

मैंने लाइन लिखी है:

String Mess = R.string.mess_1 ;

स्ट्रिंग मान प्राप्त करने के लिए, लेकिन स्ट्रिंग वापस करने के बजाय, यह मुझे टाइप पूर्णांक की आईडी दे रहा है। मैं इसका स्ट्रिंग मान कैसे प्राप्त कर सकता हूं? मैंने string.xmlफ़ाइल में स्ट्रिंग मान का उल्लेख किया है ।

जवाबों:


807

इसे इस्तेमाल करे

String mess = getResources().getString(R.string.mess_1);

अपडेट करें

String string = getString(R.string.hello);

आप किसी स्ट्रिंग को प्राप्त करने के लिए getString(int)या तो उपयोग कर सकते हैं getText(int)getText(int)स्ट्रिंग पर लागू किसी भी समृद्ध पाठ स्टाइल को बनाए रखेगा।

संदर्भ: https://developer.android.com/guide/topics/resource/string-resource.html


87
this.getString(R.string.some_id)यदि आप पहले से ही एक Context(गतिविधि या सेवा) में हैं, तो आप इसे सरल बना सकते हैं ।
मथियास 16

मैंने इसका उपयोग किया: स्ट्रिंग संदेश + = getResources ()। GetString (R.string.string1) + "कुछ और शब्द ..."; और मैं एसएमएस के माध्यम से इस स्ट्रिंग को भेजना चाहता था, लेकिन यह काम नहीं कर रहा है। यह स्ट्रिंग संसाधन के बिना ठीक काम करता है। क्या मैं कुछ भूल रहा हूँ?
कीबी

9
आप इसे और भी सरल कर सकते हैं ताकि GetString (R.string.some_id) भी हो सके। और अगर आप स्ट्रिंग को कस्टमाइज़ करना चाहते हैं, तो आप स्ट्रिंग को "वेलकम,% 1 $ s" जैसे बना सकते हैं, तो आप गेटस्ट्रिंग (R.string.some_id, "John Doe") का उपयोग कर सकते हैं। "वेलकम, जॉन डो" पाने के लिए।
एम ग्रांजा

अन्य प्रकारों के लिए भी काम करता है जैसे कि मैंने अभी इस्तेमाल किया हैgetResouces().getInteger(R.integer.my_value_in_xml)
नूह हेरॉन

61

गतिविधि में:

this.getString(R.string.resource_name)

यदि गतिविधि में नहीं है, लेकिन संदर्भ तक पहुंच है:

context.getString(R.string.resource_name)
application.getString(R.string.resource_name)

3
thisजब आप गतिविधि में हों तो आपको शामिल करने की आवश्यकता नहीं है । बस getString()आप चीजों को करने देंगे।
CopsOnRoad

43

मैं इसका उपयोग कर रहा हूं:

String URL = Resources.getSystem().getString(R.string.mess_1);

10
चेतावनी - इस उत्तर के अनुसार एंड्रॉइड के प्रलेखन का उपयोग करते हुए, Resources.getSystem()आपको एप्लिकेशन संसाधन नहीं देता है, लेकिन केवल एंड्रॉइड है। इसका उपयोग संसाधनों की तरह नहीं किया जाना चाहिए string। मैंने इस समाधान का उपयोग किया और एप्लिकेशन क्रैश हो गया, notfoundexceptionजिसे फेंकना समझना मुश्किल था (जैसा कि संसाधन मौजूद है strings.xml)।
et_l

यह भी कोशिश की - काम नहीं करता है। सच होना बहुत अच्छा
:)

23

वैसे, स्ट्रिंग स्ट्रिंग को बनाना संभव है।

<string-array name="tabs_names"> 
    <item>My Tab 1</item> 
    <item>My Tab 2</item>
</string-array>

और फिर अपनी गतिविधि से आप संदर्भ प्राप्त कर सकते हैं जैसे:

String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"

यह उत्तर ऊपर होना चाहिए। अधिकांश समय, आप एक्सएमएल से एकल स्ट्रिंग्स नहीं पढ़ रहे हैं।
ओजोनुगवा जूड ओचलिफु

11

केवल भविष्य के संदर्भों के लिए।

में स्ट्रिंग संसाधनों प्रलेखन यह कहते हैं:

आप स्ट्रिंग को पुनः प्राप्त करने के लिए getString (int) या getText (int) का उपयोग कर सकते हैं। getText (int) स्ट्रिंग पर लागू किसी भी समृद्ध पाठ स्टाइल को बनाए रखेगा।


6

समाधान 1

Context context;
String mess = context.getString(R.string.mess_1)

समाधान २

String mess = getString(R.string.mess_1)

3

टुकड़ों में, आप उपयोग कर सकते हैं

getActivity().getString(R.id.whatever);

3

यदि आप उदाहरण के लिए, साधारण उपयोग के लिए स्ट्रिंग मान जोड़ना चाहते हैं

android:text="@string/NameOfTheString"

स्ट्रिंग्स में परिभाषित पाठ। xml इस तरह दिखता है:

 <string name="NameOfTheString">Test string</string>

2

getResources()Android में उपयोग करने से पहले आपको संदर्भ का संदर्भ देना होगा ।

String user=getApplicationContext().getResources().getString(R.string.muser);

या

Context mcontext=getApplicationContext();

String user=mcontext.getResources().getString(R.string.muser);

1

आप इस कोड का उपयोग कर सकते हैं:

 gettext (R.string.mess_1); 

मूल रूप से, आपको getText () विधि के लिए संसाधन आईडी को एक पैरामीटर के रूप में पास करना होगा।


1

यदि आप किसी ऐसी गतिविधि में हैं जिसका आप उपयोग कर सकते हैं

getResources().getString(R.string.whatever_string_youWant);

यदि आप किसी गतिविधि में नहीं हैं तो इसका उपयोग करें:

getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)

1

विवरण

  • एंड्रॉइड स्टूडियो 3.1.4
  • कोटलिन संस्करण: 1.2.60

कार्य

  • सिंगल लाइन उपयोग
  • न्यूनतम कोड
  • संकलक से सुझाव का उपयोग करें

चरण 1. आवेदन ()

आप आवेदन के संदर्भ के लिए लिंक प्राप्त करें

class MY_APPLICATION_NAME: Application() {

    companion object {
        private lateinit var instance: MY_APPLICATION_NAME

        fun getAppContext(): Context = instance.applicationContext
    }

    override fun onCreate() {
        instance = this
        super.onCreate()
    }

}

चरण 2. इंट एक्सटेंशन जोड़ें

inline fun Int.toLocalizedString(): String = MY_APPLICATION_NAME.getAppContext().resources.getString(this)

प्रयोग

strings.xml

<resources>
    <!-- .......  -->
    <string name="no_internet_connection">No internet connection</string>
    <!-- .......  -->
</resources>

स्ट्रिंग मान प्राप्त करें:

val errorMessage = R.string.no_internet_connection.toLocalizedString()

परिणाम

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें


1

यू लिख जबकि R। आप R.javaग्रहण द्वारा निर्मित वर्ग का उल्लेख कर रहे हैं , उस संसाधन का उपयोग करें getResources().getString()और पास करें idजिससे आप getString()विधि के अंदर पढ़ने का प्रयास कर रहे हैं ।

उदाहरण : String[] yourStringArray = getResources().getStringArray(R.array.Your_array);



0

अपडेट करें

  • आप getString(R.string.some_string_id)दोनों में Activityया उपयोग कर सकते हैं Fragment
  • आप उस पद्धति का उपयोग कर सकते हैं Context.getString(R.string.some_string_id)जहां आपके पास getString()विधि तक सीधी पहुंच नहीं है । की तरह Dialog

समस्या वह है जहाँ आपकी Contextपहुँच नहीं है , जैसे आपकी Utilकक्षा में एक विधि ।

कॉनटेक्स्ट के बिना विधि नीचे मान लें।

public void someMethod(){
    ...
    // can't use getResource() or getString() without Context.
}

अब आप Contextइस पद्धति में एक पैरामीटर के रूप में पास होंगे और उपयोग करेंगेgetString().

public void someMethod(Context context){
    ...
    context.getString(R.string.some_id);
}

मैं क्या कर रहा हूँ

public void someMethod(){
    ...
    App.getRes().getString(R.string.some_id)
}

क्या? अपने ऐप में कहीं भी उपयोग करना बहुत सरल है!

तो यहाँ एक बोनस अद्वितीय समाधान है जिसके द्वारा आप संसाधनों को कहीं से भी एक्सेस कर सकते हैं Util class

import android.app.Application;
import android.content.res.Resources;

public class App extends Application {
    private static App mInstance;
    private static Resources res;


    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
        res = getResources();
    }

    public static App getInstance() {
        return mInstance;
    }

    public static Resources getResourses() {
        return res;
    }

}

अपने manifest.xml <applicationटैग में नाम फ़ील्ड जोड़ें ।

<application
        android:name=".App"
        ...
        >
        ...
    </application>

अब आप जाने के लिए अच्छे हैं।



0

String myString = getResources().getString(R.string.here_your_string_name);

अब आपका स्ट्रिंग myString में कॉपी हो गया है। मुझे उम्मीद है कि यह आपके लिए काम करेगा।


0

आप सीधे स्ट्रिंग्स.xml में परिभाषित मूल्य पढ़ सकते हैं:

<resources>
    <string name="hello">Hello StackOverflow!</string>
</resources>

और एक चर में सेट करें:

String mymessage = getString(R.string.hello);

लेकिन हम स्ट्रिंग को दृश्य में परिभाषित कर सकते हैं:

<TextView
    android:id="@+id/myTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello"/>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.