2016-09-29 28 views
0

要調用當前使用的新片段.add(R.id.container, fragment).replace(R.id.container, fragment)哪些問題會導致片段的容器視圖ID

,我面臨着崩潰

java.lang.IllegalArgumentException異常沒有查看發現ID

這是固定只需更換

.add(R.id.container, fragment).add(((ViewGroup)getView().getParent()).getId(), fragment)

現在我我正在考慮在任何地方使用((ViewGroup)getView().getParent()).getId(),我可以在我的應用程序中使用av oid其他崩潰。

這是個好主意嗎?如果我使用這種方法,會出現哪些問題?它安全嗎?有沒有更好的方法?

+0

什麼是R?你在使用兒童碎片嗎?......你沒有把'your.package.R'與'android.R'混淆嗎? – Selvin

回答

1

更好的方法是:

當你要添加/替換一個片段,首先檢查

容器是否爲空或不是,然後進行交易。

  FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 

      FrameLayout frame=(FrameLayout)getActivity().findViewById(R.id.reg_frame_container); 

      if(frame!=null) { 
       fragmentManager.beginTransaction().replace(R.id.reg_frame_container, new SecurityQuestions()).commit(); 

      } 
      else { 
       fragmentManager.beginTransaction().replace(R.id.frame_container_menu, new SecurityQuestions()).commit(); 

      } 

OR

您可以使用方法,如果能正常工作,但記得要檢查空狀態。

這適用於我。

希望這有助於:)

相關問題