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

时间:2013-12-09 06:12:59

标签: android android-fragments fragment

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

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

8 个答案:

答案 0 :(得分:150)

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

答案 1 :(得分:14)

使用

  

getActivity()。getApplicationContext()

获取任何片段中的上下文

答案 2 :(得分:3)

尝试使用getActivity();这将解决您的问题。

答案 3 :(得分:3)

你可以定义一个全局变量:

private Context globalContext = null;

并在onCreate方法中初始化它:

globalContext = this.getActivity();

然后您可以在所有片段函数/方法中使用“globalContext”变量。

祝你好运。

答案 4 :(得分:1)

科特林中,我们可以使用此代码分段获取应用程序上下文

requireActivity().application

答案 5 :(得分:0)

将此添加到onCreate

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

答案 6 :(得分:0)

在支持库27.1.0和更高版本中,Google引入了新方法requireContext()requireActivity()方法。

例如:ContextCompat.getColor(requireContext(), R.color.soft_gray)

更多信息here

答案 7 :(得分:0)

反应迟到,但是您可以在Kotlin中执行以下操作:

activity?.applicationContext?.let { SymptomsAdapters(it, param2, param3, ...) }

(?.)用于安全的空操作,以防止出现空指针异常。

您不希望创建新的上下文,因为当在片段之间进行交换或设备更改旋转时,这可能导致内存泄漏。

并且如上所述,在Java中,您可以通过执行以下操作来获取片段中的上下文:

getActivity().getApplicationContext()