die Methode "getString (int resId)" kann im FragmentPagerAdapter nicht verwendet werden
-
20-12-2019 - |
Frage
- Ich habe die folgende Klasse in meiner Fragmentaktivität, jetzt möchte ich den Namen von Registerkarten aus Zeichenfolgen erhalten.xml, aber ich kann die Methode nicht verwenden
getString(int resId)
es wird die Fehlermeldung "Es kann kein statischer Verweis auf die nicht statische Methode getString (int) aus dem Typkontext erstellt werden" angezeigt. - In der Methode
public CharSequence getPageTitle(int position)
Ich muss so werdenname = getString(R.string.mystring)
jede Hilfe wird geschätzt.
public static class AppSectionsPagerAdapter extends FragmentPagerAdapter { public AppSectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { switch (i) { case 0: Fragment fragment = new Activity1(); return fragment; case 1: Fragment fragment1 = new Activity2(); return fragment1; default: return new Activity2(); } } @Override public int getCount() { return 2; } public CharSequence getPageTitle(int position) { String name = null; if (position==0) { name = "Movie Details"; }else if (position==1) { name = "Movie Comments"; } return name; } }
Lösung
Du brauchst eine Context
objekt zum Anrufen getResources().getString(int resID)
.Versuchen Sie, eine zu übergeben Context
in deinem Konstruktor und benutze es hier wie
Context mContext;
public AppSectionsPagerAdapter(FragmentManager fm,Context context) {
super(fm);
mContext = context
}
und dann benutze mContext.getResources().getString(int resID)
Andere Tipps
Sie können einfach das entfernen static
schlüsselwort aus Ihrer Klassendefinition, wenn es sich um eine innere Klasse handelt.
BEARBEITEN:Tu das nicht - siehe Kommentar unten.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow