使用单个Activity android切换片段时出现NullPointerException

时间:2013-01-23 14:39:38

标签: android

美好的一天。快速问题,对于通过页脚保存多个片段的单个活动,这是实现片段之间切换的正确方法吗?每个片段都有此代码

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。并且我不确定在切换时有什么问题。谢谢。

更新刚刚意识到方向更改后出现问题。只有我的一个片段可以改变方向。其他人被锁定为肖像。所以在特权改变后发生方向改变,然后我切换片段,就会出现问题。

0 个答案:

没有答案