2016-09-29 37 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

您可以使用方法,如果能正常工作,但记得要检查空状态。

这适用于我。

希望这有助于:)