2013-09-02 7 views
5

मैं अपने व्यूअर के लिए शीर्षक सेट करने का प्रयास कर रहा हूं, मुझे लगता है कि यह काम करने के लिए प्रतीत नहीं होता है। मैंने संसाधनों को कोशिश की .getSystem()। GetString (R.string.title1); और एक संदर्भ पारित करने की भी कोशिश की। क्या कोई मेरी मदद कर सकता है?ViewPager एडाप्टर के भीतर स्ट्रिंग संसाधन कैसे प्राप्त करें?

public class ViewPagerAdapter extends FragmentPagerAdapter { 
    final int PAGE_COUNT = 3; 
    Context context; 

    public ViewPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public int getCount() { 
     return PAGE_COUNT; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return PageFragment.create(position + 1); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 

     switch (position) { 

     case 0: 
      return Resources.getSystem().getString(R.string.title1); 

     case 1: 
      return Resources.getSystem().getString(R.string.title1); 

     case 2: 
      return Resources.getSystem().getString(R.string.title1); 
     } 

     return null; 
    } 
} 

Logcat:

09-02 17:40:33.160: E/AndroidRuntime(3116): FATAL EXCEPTION: main 
09-02 17:40:33.160: E/AndroidRuntime(3116): android.content.res.Resources$NotFoundException: String resource ID #0x7f050003 
09-02 17:40:33.160: E/AndroidRuntime(3116):  at android.content.res.Resources.getText(Resources.java:230) 
09-02 17:40:33.160: E/AndroidRuntime(3116):  at android.content.res.Resources.getString(Resources.java:314) 

उत्तर

9

खैर, अपने त्रुटि संदेश के अनुसार आप आईडी अनुरोध कर रहे हैं साथ एक स्ट्रिंग नहीं है।

यह हो सकता है कि आप बहु भाषाओं समर्थन रहे हैं और केवल एक विशिष्ट भाषा के लिए स्ट्रिंग-आईडी इस तरह?

फिर भी, कोड की इस पंक्ति:

String yourstring = getResources().getString(R.string.yourstring); 

कैसे संसाधन से एक स्ट्रिंग प्राप्त करने के लिए है।

0

आप Resources प्राप्त किए बिना Resources के अंदर String लाने की कोशिश कर रहे हैं। तो अपने Resources को getResources() के साथ अपने Context के साथ खींचने का प्रयास करें।

यदि आप Activity या Service के अंदर हैं तो संदर्भ वहां है। यदि बाहर है तो Context को पहले getApplicationContext() के साथ खींचने का प्रयास करें और उस पर संसाधनों को खींचें और अपने String को अंत में खींचें।

आपके कोड के अनुसार इन स्निपेट resources पर कोई अपवाद नहीं फेंकेंगे और String आईडी का सही ढंग से खींचा जाएगा।

public CharSequence getPageTitle(int position) 
    { 
    switch (position) 
    { 
    case 0: 
      return getResources().getString(R.string.title1); 
    case 1: 
      return getResources().getString(R.string.title1); 
    case 2: 
      return getResources().getString(R.string.title1); 
    } 
    return null; 
    } 
28

आप एक गतिविधि के संदर्भ से GetString बुलाना चाहिए

public class ViewPagerAdapter extends FragmentPagerAdapter { 
    final int PAGE_COUNT = 3; 
    Context context; 

    public ViewPagerAdapter(FragmentManager fm, Context nContext) { 
     super(fm); 
     context = nContext; 
    } 

    @Override 
    public int getCount() { 
     return PAGE_COUNT; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return PageFragment.create(position + 1); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 

     switch (position) { 

     case 0: 
      return context.getString(R.string.title1); 

     case 1: 
      return context.getString(R.string.title1); 

     case 2: 
      return context.getString(R.string.title1); 
     } 

     return null; 
    } 
} 
0

getApplicationContext प्रयास करें() getResources () .getString (R.String.title1) करने के लिए अपने कोड बदल जाते हैं।;

0

मेरे अनुभव में, दृश्य पेजर प्रत्येक पाठ को लगातार स्क्रीन पर नहीं दिखाएगा। मुझे प्रत्येक पृष्ठ के लिए अलग-अलग लेआउट बनाने और लेआउट के भीतर से टेक्स्ट असाइन करने की आवश्यकता थी, इसलिए पृष्ठों को फ़्लिप करते समय प्रत्येक पृष्ठ अपने टेक्स्ट के साथ एक लेआउट दिखाएगा।

3

आप किसी गतिविधि के बाहर से स्ट्रिंग संसाधनों का उपयोग करने की कोशिश कर रहे हैं, तो आप में उस वर्ग के लिए (जो आप ने कहा आप पहले से ही किया है) संदर्भ पारित करने के लिए, और फिर भी

String str = context.getResources().getString(R.string.some_string); 

फोन की जरूरत है यह सुनिश्चित करने के लिए कि आप स्ट्रिंग आईडी का सही उपयोग कर रहे हैं, अपनी strings.xml फ़ाइल देखें। यदि आप एंड्रॉइड स्टूडियो का उपयोग कर रहे हैं तो आप बस R.string. टाइप करना शुरू कर सकते हैं और फिर यह स्ट्रिंग्स.एक्सएमएल फ़ाइल से सुझाव दिखाएगा। यदि आप यहां अपना संसाधन नहीं देखते हैं, तो यह आपके संसाधनों को संग्रहीत करने के तरीके के साथ एक समस्या का संकेत दे सकता है, क्योंकि आप उन्हें कैसे एक्सेस करने का प्रयास कर रहे हैं।

0

बस getContext() का उपयोग करके उपलब्ध का उपयोग करें। GetString (resId) getContext()। GetString (R।string.title1)। यह मेरे लिए काम किया।

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