Android – NullPointerException从创build一个适配器

我创build一个列表视图的数组适配器,一切正常,我有2个片段,并在这两个片段之间的操作栏的顶部的2个button。 我的问题是,如果我在这些碎片之间移动得太快,当我打开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) 

任何想法我怎么能解决这个问题?

  • ViewPager中的部分片段在屏幕底部被截断(Android)
  • 带有Recyclerview的ViewPager上的NullPointerException
  • Android:片段:setContentView的替代
  • FragmentManager popBackStack不会删除片段
  • 不使用NDK的genymotion模拟器上的致命信号11(SIGSEGV)代码= 2
  • android.support.v4.app.getFragmentManager()返回null?
  • Android上的Dagger 2:在Activity中注入相同的依赖项并保留Fragment
  • NullPointerException在FragmentManager中
  • 所以基本上经过大量的检查之后,我发现问题在于我在一个不同的片段中返回到这个片段,因为我有一个监听器指向那里并试图打开这个方法。

    基本上我只是把它包裹在一个

     if (getActivity() != null) { // Code goes here. } 

    并解决问题。

    非常感谢所有的帮助家伙!

    如果你在一个片段检查是否添加片段。

     { ... if (!this.isAdded()) { //this = current fragment return; } LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); ... } 

    你可以这样做。

    内部活动

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

    使用try catch块,它为我工作