2013-12-09 9 views
33

Zapisałem niektóre dane w globalnej klasie, używając kontekstu aplikacji w jednym działaniu. Później muszę odzyskać te wartości w Fragmentie A. Zrobiłem coś takiego, aby przechowywać w Global Class.Pobierz kontekst aplikacji w Fragment w systemie Android?

AndroidGlobalClass AGC = ((AndroidGlobalClass) getApplicationContext()); 
AGC.setUser_access("XYZ"); 
AGC.setFirst_name("ABC"); 

I w manifeście Zrobiłem:

<application 
    android:name=".AndroidGlobalClass" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="abc.SignInActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

Teraz Kiedy próbuję uzyskać kontekst aplikacji Korzystanie z tego ... Nie otrzymuję kontekstu ...

AndroidGlobalClass AGC = ((AndroidGlobalClass) getApplicationContext()); 

to jest Mój Fragment aktywny

public class Fragment_NewsFeed extends Fragment { 
    public Fragment_NewsFeed() { 
    } 

    RestImplimentationMethods RIM; 
    AndroidGlobalClass AGC; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_newsfeed, container, false); 
     return rootView; 
    } 
} 
+7

Należy zachować ostrożność, prosząc o pomoc "ASAP". Odstraszasz każdego, kto zechce dać ci niezłą, dokładną odpowiedź. Jak widzieliście, kończysz w garści odpowiedzi w jednym wierszu, które tak naprawdę nie pomagają. – tir38

+0

lub użyj 'isAdded()', aby sprawdzić, czy fragment pogody jest dołączony do działania, czy nie, a jeśli dołączony niż u, będzie mógł uzyskać 'getActivity(). GetApplicationContext()' :). w ten sposób ubezpieczasz się, nigdy nie dostajesz błędu NPE i aplikacja nie ulegnie awarii –

Odpowiedz

122

można uzyskać kontekst korzystając getActivity().getApplicationContext();

+26

Ostrożnie, gdy to wywołasz, ponieważ 'getActivity()' zwróci wartość null, jeśli fragment został odłączony – gunar

+0

Dzięki temu działa .... –

+2

Utwórz statyczny kontekst aplikacji w klasie Application i przypisz go on onCreate(): MyApplication.sContext = getApplicationContext(); Następnie możesz uzyskać do niego dostęp z dowolnego działania bez obawy o odłączenie fragmentu. – Eduard

4

Spróbuj użyć getActivity(); To rozwiąże twój problem.

+0

Czy możesz szczegółowo zapisać kod, aby uzyskać kontekst aplikacji dla mojego kodu? Mam problem z kodem – NRahman

+0

getActivity(). getApplicationContext(); Będzie .. Thanx – NRahman

+0

AndroidGlobalClass AGC = nowy AndroidGlobalClass (getActivity()); –

13

Zastosowanie

getActivity(). GetApplicationContext()

aby uzyskać kontekst, w każdym fragmencie

+1

Ostrożnie, działa to tylko wtedy, gdy fragment jest obecnie dołączony do działania! –

4

można zdefiniować zmienna globalna:

private Context globalContext = null; 

iw sposobie onCreate zainicjować go:

globalContext = this.getActivity(); 

I przez które można użyć zmiennej „globalContext” we wszystkich swoich funkcji/metod fragmentów.

Powodzenia.

2

Dodaj to do onCreate

// Getting application context 
     Context context = getActivity(); 
+0

To nie jest kontekst aplikacji! Używanie tego kontekstu z zachowanymi fragmentami w obrębie rekreacji ruchowej doprowadzi do wycieku pamięci! –

3

Kiedy w Fragmentu, zawsze można zastąpić

void onAttach (Context context) { 
    this.context = context; 
} 

Metoda ta jest zawsze wzywał do fragmentu wsparcia - android.support.v4.app.Fragment i można mieć pewność, że prawidłowe działanie na kontekst zostanie ustawiony.

Powiązane problemy