我正在为一个列表视图创建一个数组适配器,一切正常,我有两个片段,以及在这两个片段之间变化的操作栏顶部的两个按钮。我的问题是,如果我在这些片段之间移动得太快,当我打开fragOne,切换到fragTwo,然后快速移回fragOne时,我会崩溃。fragOne从getActivity上下文中抛出NPE。
这就是崩溃的代码行:
adapter = new MainFragmentDocumentAdapter(getActivity(), docsList, DocumentsFragment.this, page);
日志报告:
E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.bbb.app, PID: 17438
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:104)
at com.bbb.app.UI.adapters.MainFragmentDocumentAdapter.<init>(MainFragmentDocumentAdapter.java:51)
你知道我怎么解决这个问题吗?
发布于 2015-03-02 17:36:14
因此,基本上经过大量检查后,我发现问题在于我在不同的片段中返回到该片段,因为我有一个侦听器在那里指出并试图打开该方法。
基本上我只是把它包装在一个
if (getActivity() != null) {
// Code goes here.
}
问题就解决了。
不过,还是非常感谢大家的帮助!
发布于 2015-09-01 19:37:14
如果您使用的是片段,请检查是否添加了该片段。
{
...
if (!this.isAdded()) { //this = current fragment
return;
}
LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
...
}
发布于 2015-05-22 17:29:57
你可以这样做。
内部活动
public static UsageRecommendationTabActivity getInstance() {
return activityInstance;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityInstance=this;
}
内部片段
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
if (activity instanceof UsageRecommendationTabActivity)
mParentActivity = (UsageRecommendationTabActivity) activity;
if (mParentActivity == null)
mParentActivity = UsageRecommendationTabActivity.getInstance();
}
然后调用您的适配器
adapter = new MainFragmentDocumentAdapter(mParentActivity, docsList, DocumentsFragment.this, page);
https://stackoverflow.com/questions/28414480
复制相似问题