1

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

私人无效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() 等。对于不同的片段也有不同的标签。这是在单个活动页脚中的片段之间切换的好方法还是有更清洁的方法。我有时会在上面注释的行中得到 NullPointerException。并且不确定切换时那里做错了什么。谢谢你。

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

4

0 回答 0