2011-09-07 6 views
7

मेरे कोड है:एंड्रॉयड: जावा: एक टोस्ट में एक स्ट्रिंग संसाधन का उपयोग कर

public static void ToastMemoryShort (Context context) { 
    CharSequence text = getString(R.string.toast_memoryshort); //error here 
    Toast.makeText(context, text, Toast.LENGTH_LONG).show(); 
    return; 
    } 

लेकिन मैं "हो रही है प्रकार प्रसंग से गैर स्थैतिक विधि GetString (पूर्णांक) के लिए एक स्थिर संदर्भ नहीं कर सकते "ग्रहण में। मैं अपने ऐप (संसाधनों में सभी कड़ी कोडित तार हो रही है) स्थानीयकरण के लिए तैयार होने के लिए कोशिश कर रहा हूँ, इसलिए मैं जहां:

getString(R.string.toast_memoryshort) 

मैं पहले था एक कठिन कोडित स्ट्रिंग जो ठीक था।

मुझे यकीन नहीं है कि यहां क्या हो रहा है (जावा नोब)। क्या कोई मुझे कृपया प्रबुद्ध कर सकता है?

बहुत धन्यवाद

बाज

उत्तर

2

बस बजाय इसका उपयोग:

makeText (संदर्भ संदर्भ, पूर्णांक Resid, पूर्णांक अवधि) एक मानक बनाओ टोस्ट जिसमें संसाधन से टेक्स्ट के साथ एक टेक्स्ट व्यू शामिल है।

http://developer.android.com/reference/android/widget/Toast.html

+0

बहुत धन्यवाद स्टीफन, सही। – Barry

+0

दरअसल, यह आपके उत्तर और रासेल की एक संयोजन थी: अंत में दिखाया गया था, संसाधन आईडी से पहले रासेल के "" की आवश्यकता नहीं थी: टोस्ट.मेकटेक्स्ट (संदर्भ, आर.स्ट्रिंग.toast_memoryshort, टोस्ट.LENGTH_LONG) ।प्रदर्शन(); तो रसेल को +1 भी। बहुत धन्यवाद। – Barry

+0

हाँ, ज़ाहिर है। शो() की आवश्यकता है :) –

16

को बदलें
public static void ToastMemoryShort (Context context) { 

     Toast.makeText(context, context.getString(R.string.toast_memoryshort), Toast.LENGTH_LONG).show(); 
     return; 
     } 
+0

धन्यवाद रसेल में कार्यान्वित किया जाता, ऊपर देखें। – Barry

+0

इस उत्तर का इतना लोकप्रिय कारण यह है कि पहले स्थान पर 'getString' का उपयोग करने से पता चलता है कि किसी कारण (स्ट्र इंजेक्शन, स्वरूपण इत्यादि) के लिए स्ट्रिंग की आवश्यकता थी। इसके अलावा, यह वास्तव में प्रश्न में अपवाद को हल करता है जो एक वास्तविक मूल्य है। – tishma

2

से आप अपने टोस्ट अधिक इस तरह सामान्य बना सकता है:

public void toast(String msg){ 
    Context context = getApplicationContext(); 
    CharSequence text = msg; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(context, text, duration); 
    toast.show(); 
} 

तो बस जब आप इस तरह की जरूरत है कहते हैं:

toast("My message hardcoded"); 

या का उपयोग कर strngs.xml इस तरह:

toast(this.getString(R.string.toast_memoryshort)); 
0

आप

CharSequence text = getString(R.string.toast_memoryshort); //error here 

बदलना चाहिए के लिए:

CharSequence text = context.getString(R.string.toast_memoryshort); 

getString समारोह Context#getString(int)

संबंधित मुद्दे