哪些问题可能导致片段的容器视图ID

时间:2016-09-29 14:19:43

标签: android android-fragments

要调用新片段,我正在使用.add(R.id.container, fragment).replace(R.id.container, fragment)

我面临崩溃

  

java.lang.IllegalArgumentException找不到id

的视图

修复后只需更换

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

现在我正考虑在我的应用中尽可能地使用((ViewGroup)getView().getParent()).getId()以避免其他崩溃。

这是好主意吗?如果我使用这种方法会出现哪些问题?安全吗?有没有更好的方法?

1 个答案:

答案 0 :(得分: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

如果方法正常,您可以使用您的方法,但请记住检查是否为空状态。

这适合我。

希望这会有所帮助:)