2013-12-09 74 views
33

通過在一個活動中使用應用程序上下文,我已經將一些數據存儲到全局類。稍後我必須在A片段中檢索這些值。我已經做了這樣的事情來存儲在全球班。在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()); 

這是我的片段活動

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

在Application類中創建一個靜態應用程序上下文並將其分配給onCreate(): MyApplication.sContext = getApplicationContext(); 然後,您可以從任何活動訪問它,而無需擔心碎片分離。 – Eduard

4

嘗試使用getActivity();這將解決您的問題。

+0

您可以具體寫下代碼如何獲得我的代碼的應用程序上下文..我有問題的代碼 – NRahman

+0

getActivity()。getApplicationContext();將... Thanx – NRahman

+0

AndroidGlobalClass AGC = new 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,你可以肯定的是正確的活動的上下文將被設置。