2013-01-01 13 views

risposta

4

Da un uso frammento:

getActivity().getString(...) 

da un uso dell'adattatore:

getContext().getResources().getString(...) 

Sì, avete bisogno di un contesto per accedere alle risorse.

+3

Si noti che 'getActivity()' sarà null finché non viene richiamato 'onActivityCreated()'. – dmon

+0

grazie, ma sfortunatamente sono in un FragmentPagerAdapter, non in un frammento! –

+0

usa getContext() così, e se non hai accesso a un contesto, passalo. – Snicolas

2

Ho avuto un problema simile. Dal layout di un cassetto, volevo decidere quale frammento utilizzare in un metodo chiamato da una classe helper.

Quindi, in onCreateView ...

String form = getResources().getStringArray(R.array.drawer_array)[i]; 
     Context context = getActivity().getApplicationContext(); 

     FragmentHelper fh = new FragmentHelper(); 
     int myFragment = fh.getCurrentFragment(form,context); 

E in FragmentHelper pubblico() ...

public int getCurrentFragment(String form, Context context){ 
       ... 
       context.getResources().getString(R.string.label_item1); 
       ... 
    } 

Il trucco è quello di aggiungere contesto di fronte getResources(). Altrimenti, il mio stack ha mostrato che il frammento non era associato a un'attività.

Spero che questo aiuti qualcuno.

Problemi correlati