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) 

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

Solutions Collecting From Web of "Android – NullPointerException从创build一个适配器"

所以基本上经过大量的检查之后,我发现问题在于我在一个不同的片段中返回到这个片段,因为我有一个监听器指向那里并试图打开这个方法。

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

 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块,它为我工作