美好的一天。快速问题,对于通过页脚保存多个片段的单个活动,这是实现片段之间切换的正确方法吗?每个片段都有此代码
private void showMyFragment(){
FragmentTransaction ft = fragmanager.beginTransaction();
if(fragmanager.findFragmentByTag(MY_FRAG_TAG) != null){ //different Tag for different fragment
ft.replace(R.id.dashboard_fragment_container_id, myfragment, MY_FRAG_TAG); //NUllPointerException sometimes here
ft.commit();
}
else {
myfragment = new MyFragment();
ft.replace(R.id.dashboard_fragment_container_id, myfragment, MY_FRAG_TAG);
ft.addToBackStack(null);
ft.commit();
}
}
堆栈跟踪是:
01-23 15:07:20.432: E/AndroidRuntime(30834): FATAL EXCEPTION: main
01-23 15:07:20.432: E/AndroidRuntime(30834): java.lang.NullPointerException
01-23 15:07:20.432: E/AndroidRuntime(30834): at android.support.v4.app.BackStackRecord.doAddOp(Unknown Source)
01-23 15:07:20.432: E/AndroidRuntime(30834): at android.support.v4.app.BackStackRecord.replace(Unknown Source)
01-23 15:07:20.432: E/AndroidRuntime(30834): at com.company.example.DashBoardActivity.showComparisonDashboard(DashBoardActivity.java:431)
01-23 15:07:20.432: E/AndroidRuntime(30834): at com.company.example.DashBoardActivity.onClick(DashBoardActivity.java:359)
01-23 15:07:20.432: E/AndroidRuntime(30834): at android.view.View.performClick(View.java:2533)
假设每个持有片段的方法都有这个代码..比如MyFragment1的showMyFragment1(),MyFragment2等的showMyFragment2()。对于不同的片段,还有一个不同的Tag。这是在单个活动页脚中切换片段的好方法,还是有更简洁的方法。我有时在上面评论的行中得到NullPointerException。并且我不确定在切换时有什么问题。谢谢。
更新刚刚意识到方向更改后出现问题。只有我的一个片段可以改变方向。其他人被锁定为肖像。所以在特权改变后发生方向改变,然后我切换片段,就会出现问题。