我通过在一个活动中使用应用程序上下文将一些数据存储到全局类。后来我必须在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;
}
}
答案 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()