在我的应用程序中有一个包含三个选项卡(地图、列表、设置)的片段活动。我已将删除和提交放在地图选项卡的 onPause() 方法(扩展片段)。当我在选项卡之间切换时,它工作正常,但是当我移动到下一页(下一个活动)并返回时,它会引发空指针异常。
因为当我切换到下一个活动时,onPause() 地图片段已被删除并提交,当它返回时发现它为空并引发异常。我无法弄清楚在哪里放置我的 onPause() 方法代码或如何在重新启动或恢复时再次初始化片段。
公共类 LocatorMainActivity 扩展 FragmentActivity {
public class MapSectionFragment extends Fragment {
GoogleMap map;
public MapSectionFragment() {
}
/*
* (non-Javadoc)
*
* @see android.support.v4.app.Fragment#onDestroyView()
*/
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
Log.e("", "onDestroyView");
/*try{
Fragment fragment = (getFragmentManager()
.findFragmentById(R.id.map));
ft = getFragmentManager()
.beginTransaction();
//ft.addToBackStack(null);
ft.remove(fragment);
ft.commit();
//getFragmentManager().executePendingTransactions();
//ft.commitAllowingStateLoss();
}catch(Exception e){
Log.e("", "Exception::" + e.toString());
}*/
}
@Override
public void onPause(){
super.onPause();
Log.e("", "onPause");
try{
Fragment fragment = (getFragmentManager()
.findFragmentById(R.id.map));
ft = getFragmentManager()
.beginTransaction();
//if(ft.isAddToBackStackAllowed()){
//ft.hide(fragment);
if(ft.isAddToBackStackAllowed()){
Log.e("", "back stack allowed");
ft.remove(fragment);
//ft.addToBackStack(getTag());
//ft.addToBackStack(null);
ft.commit();
}
//}
//getFragmentManager().executePendingTransactions();
//ft.commitAllowingStateLoss();
}catch(Exception e){
Log.e("", "Exception::" + e.toString());
}
}
/*
@Override
public void onResume(){
super.onResume();
Log.e("inner", "onResume");
}*/
@Override
public void onStop() {
super.onStop();
Log.e("inner", "onStop");
//mReturningWithResult = false;
}
View rootView = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//code
});
return rootView;
}
}
}
请建议我哪里错了。谢谢。