2013-12-09 5 views
33

Я сохранил некоторые данные в глобальном классе. Используя контекст приложения в одном действии. Позже я должен получить эти значения в A Fragment. Я сделал что-то подобное для хранения в Global Class.Получите контекст приложения во фрагменте в Android?

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

И В манифесте я сделал:

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

Теперь, когда я пытаюсь получить контекст приложений с помощью этого ... Я не получаю контекст ...

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

Это моя Fragment активность

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

Будьте осторожны, прося о помощи «КАК МОЖНО СКОРЕЕ». Вы отпугиваете всех, кто захочет дать вам хороший подробный ответ. Как вы видели, вы попадаете в группу из одной строки, и это не помогает. – tir38

+0

или использовать 'isAdded()' для проверки погодного фрагмента, присоединенного к активности или нет, и если он присоединен, то вы сможете получить 'getActivity(). GetApplicationContext()' :). таким образом, вы застрахованы, никогда не получите ошибку NPE, и приложение не столкнется с сбоем. –

ответ

122

Вы можете получить контекст, используя getActivity().getApplicationContext();

+26

Осторожно, когда вы вызываете это, поскольку 'getActivity()' будет возвращать null, если фрагмент был удален – gunar

+0

Спасибо, что это работает .... –

+2

Создайте статический контекст приложения в своем классе приложения и назначьте его в onCreate(): MyApplication.sContext = getApplicationContext(); Тогда вы можете получить к нему доступ из любой деятельности, не беспокоясь о отрыве фрагмента. – Eduard

4

Попробуйте использовать getActivity(); Это решит вашу проблему.

+0

Можете ли вы конкретно записать код, как получить контекст приложения для моего кода. У меня возникла проблема с кодом – NRahman

+0

getActivity(). getApplicationContext(); Будет .. Thanx – NRahman

+0

AndroidGlobalClass AGC = новый AndroidGlobalClass (getActivity()); –

13

Использование

getActivity(). GetApplicationContext()

получить контекст в любом фрагменте

+1

Осторожно, это работает только в том случае, если в данный момент фрагмент привязан к действию! –

4

можно определить глобальная переменная:

private Context globalContext = null; 

и в методе OnCreate, инициализировать его:

globalContext = this.getActivity(); 

И что вы можете использовать переменную «globalContext» во всех своих функций фрагмента/методов.

Удачи.

2

Добавить это OnCreate

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

Это не контекст приложения! Использование этого контекста с сохраненными фрагментами во время активного отдыха приведет к утечке памяти! –

3

Когда в фрагмента, вы всегда можете переопределить

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

Этот метод всегда вызывается для фрагмента поддержки - android.support.v4.app.Fragment, и вы можете быть уверены, что правильно данный вид деятельности контекст будет установлен.

Смежные вопросы