2016-08-10 2 views
0

So habe ich das folgende Problem: Ich möchte ein String-Array als Titel für ein TabLayout verwenden.Resource Strings als Titel für eine tabLayout

In diesem Fall verwende ich einen ViewPagerAdapter für das Layout und jetzt möchte ich den Titel der Registerkarten in einem String-Array speichern.

Um eine Übersetzung dieser Titel zu liefern, verwende ich 2 Ressourcen-Strings, aber ich kann sie nicht verwenden, da das String-Array nur Zeichenfolgen verwenden kann und die Ressourcen-Strings ints (perfekter Satz) sind.

Inkompatible Typen.

erforderlich: java.lang.String

Gefunden: int

public class ViewPagerAdapter extends FragmentPagerAdapter { 

    String[] tabTitleArray = { 
     R.string.dice, R.string.presets 
    }; 

    public ViewPagerAdapter(FragmentManager manager) { 

     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return null; 
    } 

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

Der Fehler ist hier:

String[] tabTitleArray = {R.string.dice, R.string.presets}; 

auch: ich nicht verwenden können, getResource().getString();

stattdessen
+0

Warum konvertieren Sie diese Werte nicht in Strings, sondern in Strings? – Eenvincible

+0

Wenn Sie getResources() nicht verwenden können, übergeben Sie onething Ihr String-Array in Ihrem Adapter mit FragmentManager und deklarieren Sie dort String Array mit getResources() – Vickyexpert

+0

final Stringlabels = getApplicationContext(). GetResources(). GetString (R.String .labels); – YUVRAJ

Antwort

0

String-Array Verwendung:

<string-array name="labels"> 
    <item>my URL1</item> 
    <item>my URL2</item> 
</string-array> 

und es zu benutzen:

final String[] labels = getResources().getStringArray(R.array.labels); 
+0

Funktioniert aber es kann die Methode nicht auflösen getResources() – 2Simpel

+0

Verwenden Sie getContext() oder getActivity(), wenn Sie es im Fragment verwenden, um auf getResources() zuzugreifen. GetStringArray (R.array.labels). Oder übergeben Sie den Kontext der Aktivität in Adapter \ – MRX

+0

Initialisieren Sie das String-Array in Aktivität/Fragment und übergeben Sie es im Konstruktor Ihres Adapters wie Lino – MRX

2

A staightforward Lösung wäre, den ViewPagerAdapter mit dem Kontext zu schaffen, um auf Ressourcen zuzugreifen, wie:

public ViewPagerAdapter (FragmentManager manager, Context context) { 

    super(manager); 
    this.mContext = context; 
} 

und dann

mContext.getResource().getString(....) 
+0

Ich schaffte es, es zu tun! Danke für Ihre Hilfe! :) – 2Simpel

+0

@ 2Simpel nur um SO-Regeln zu erfüllen, bitte akzeptiere eine der veröffentlichten Antworten oder poste selbst die Lösung und akzeptiere sie – Lino

Verwandte Themen