在Android中的片段中获取应用程序上下文?

NRa*_*man 47 android fragment android-fragments

我已经通过在一个活动中使用应用程序上下文将一些数据存储到全局类.后来我必须在A Fragment中检索这些值.我已经做了类似的事情来存储在Global Class中.

AndroidGlobalClass  AGC = ((AndroidGlobalClass) getApplicationContext());
AGC.setUser_access("XYZ");
AGC.setFirst_name("ABC");
Run Code Online (Sandbox Code Playgroud)

我在Manifest中做过:

<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>
Run Code Online (Sandbox Code Playgroud)

现在,当我试图获取应用程序上下文时使用此...我没有得到上下文...

AndroidGlobalClass  AGC = ((AndroidGlobalClass) getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

这是My Fragment Activity

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Sal*_*Gad 156

您可以使用上下文 getActivity().getApplicationContext();

  • 在你调用它的时候要小心,因为如果片段已被分离,`getActivity()`将返回null (35认同)
  • 不需要使用.getApplicationContext(),只需getActivity()即可. (8认同)
  • 在Application类中创建一个静态应用程序上下文,并在onCreate()中分配它:MyApplication.sContext = getApplicationContext(); 然后,您可以从任何活动访问它,而无需担心碎片分离. (3认同)
  • @Borzh getActivity() 不会为您提供应用程序上下文,并且会导致在重新创建活动后保留片段的内存泄漏。如果您不是特别需要它,则不建议使用该上下文。如果足够,最好调用 getApplicationContext()。 (2认同)

Eld*_*opj 15

Kotlin中,我们可以使用此方法获取片段中的应用程序上下文

requireActivity().application
Run Code Online (Sandbox Code Playgroud)


Aak*_*yal 14

使用

getActivity().getApplicationContext()

获取任何片段中的上下文

  • 小心,这只有当片段当前附加到活动时才有效! (2认同)
  • @Sreekanth Karumanaghat旋转屏幕时会发生这种情况.查看片段生命周期. (2认同)