2013-09-02 24 views
5

Görüntüleyici cihazımın başlığını ayarlamaya çalışıyorum, işe yaramaya gelemiyorum. Resources.getSystem(). GetString (R.string.title1); ve ayrıca bir bağlamı geçmeye çalıştı. Biri bana yardım edebilir mi?ViewPager Bağdaştırıcısı içinde Dize Kaynağı nasıl alınır?

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) 

cevap

9

Eh, hata iletisine göre size talebinde kimliği ile bir String yok.

Eğer çoklu dil destekleme ve sadece belirli bir dil için dize-ID bu tür olduğunu olabilir mi?

Neyse, bu kod satırı:

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

Kaynaklarından bir dize nasıl olduğunu.

0

ResourcesResources kazanmadan String ürününü getirmeye çalışıyorsunuz. 'u getResources() ile Context ile çekmeye çalışın.

İçinde Activity veya Service varsa, içerik var. Dışarda ise 'u ilk olarak getApplicationContext() ile çekmeye çalışın ve bunun üzerine kaynakları çekin ve üzerinde String ürününü çekin.

Kodunuz gereğince, resources ve belirtilen String kimlikleri doğru şekilde çekildiyse, bu kod parçacığı herhangi bir istisna alamaz.

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

Eğer bir faaliyetin bağlamdan getString çağrı

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 deneyin() GetResources () .getString (R.String.title1) için kodunuzu değiştirmeniz gerekir.;

0

Deneyimimde, görüntülü çağrı cihazı her metni tutarlı bir şekilde atanan ekrana göstermez. Her sayfa için ayrı bir düzen oluşturmalı ve metni mizanpaj içinden atamam gerekti, böylece sayfaları çevirirken her sayfa metniyle bir düzen gösterecektir. bir etkinliğe dışından dize kaynaklarına erişmek çalışıyorsanız

3

, o zaman (siz bunu zaten yapmış belirtti olan) o sınıfa bağlamı geçmesi ve sonra da

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

çağırmanız gerekir dize kimliğini doğru kullandığınızdan emin olmak için strings.xml dosyanızı kontrol edin. Eğer android stüdyosunu kullanıyorsanız, sadece R.string. yazarak başlayabilmeli ve daha sonra strings.xml dosyasından öneriler gösterecektir. Kaynağınızı burada görmüyorsanız, bu, kaynaklarınızı nasıl depoladığınıza ilişkin bir soruna, bunlara nasıl erişmeye çalıştığınızın tersini gösterebilir.

0

Sadece getContext(). GetString (resId) gibi kullanılabilir getContext(). GetString (R.string.title1). Benim için çalıştı.