2013-12-09 4 views
33

Ich habe einige Daten in einer globalen Klasse gespeichert, indem Sie den Anwendungskontext in einer Aktivität verwenden. Später muss ich diese Werte in A Fragment abrufen. Ich habe so etwas in der Global Class gespeichert.Erhalten Sie den Anwendungskontext in Fragmenten in Android?

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

und im Manifest habe ich getan:

<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> 

Wenn ich jetzt ... ich immer bin nicht der Kontext bin Der Versuch, den Anwendungskontext Mit diesem Get ...

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

Dies ist mein Fragment Aktivität

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

Seien Sie vorsichtig und bitten Sie um Hilfe "so schnell wie möglich". Du verschreckst jeden, der dir eine gute und gründliche Antwort geben möchte. Wie Sie gesehen haben, enden Sie mit einer Reihe von Ein-Zeilen-Antworten, die nicht wirklich helfen. – tir38

+0

oder verwenden Sie 'isAdded()', um zu überprüfen, ob das Wetterfragment an die Aktivität angehängt ist oder nicht, und wenn es angehängt ist, können Sie 'getActivity(). GetApplicationContext()' :) bekommen. So versichern Sie sich, nie NPE-Fehler und App wird nicht zum Absturz bringen –

Antwort

122

können Sie den Kontext erhalten getActivity().getApplicationContext();

+26

Vorsichtig, wo Sie dies aufrufen, da 'getActivity()' Null zurückgibt, wenn das Fragment entfernt wurde – gunar

+0

Danke, dass es funktioniert .... –

+2

Erstellen Sie einen statischen Anwendungskontext in Ihrer Anwendungsklasse und weisen Sie ihn in onCreate() zu: MyApplication.sContext = getApplicationContext(); Dann können Sie von jeder Aktivität darauf zugreifen, ohne sich um die Fragmenttrennung kümmern zu müssen. – Eduard

4

Versuchen Sie getActivity(); zu verwenden Dies wird Ihr Problem lösen.

+0

Können Sie den Code speziell aufschreiben, wie Sie den Anwendungskontext für meinen Code bekommen .. Ich habe ein Problem mit dem Code – NRahman

+0

getActivity(). getApplicationContext(); Wird .. Thanx – NRahman

+0

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

13

Verwenden

getActivity(). GetApplicationContext()

den Kontext, in jedem Fragment zu erhalten

+1

Vorsicht, das funktioniert nur, wenn das Fragment gerade an eine Aktivität angehängt ist! –

4

verwenden, können Sie festlegen, eine globale Variable:

private Context globalContext = null; 

und in der onCreate Methode initialisieren:

globalContext = this.getActivity(); 

Und damit können Sie die "globalContext" Variable in allen Fragment Funktionen/Methoden.

Viel Glück.

2

Fügen Sie diese auf onCreate

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

Dies ist nicht der Anwendungskontext! Die Verwendung dieses Kontexts mit beibehaltenen Fragmenten über die Aktivitätserholung hinweg führt zu Speicherlecks! –

3

Wenn in Fragmente, Sie immer

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

Diese Methode immer für eine Unterstützung Fragment genannt wird außer Kraft setzen können - android.support.v4.app.Fragment und Sie können sicher sein, dass die die richtige Aktivität Kontext wird festgelegt.

Verwandte Themen