使用0 containerViewId添加片段

mal*_*din 3 android android-fragments

当我打电话时,android会在哪里添加片段 FragmentTransaction add (Fragment fragment, String tag)

我编写了这段代码,但我看不到片段的布局.它显示一个空屏幕.

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Fragment fragment = new TestFragment();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(fragment, "test");
        ft.commit();
    } // onCreate

 public class TestFragment extends Fragment {

        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup        container, Bundle savedInstanceState) {
            return inflater.inflate(R.layout.frag_layout, container, false);
        }
    } // TestFragment
Run Code Online (Sandbox Code Playgroud)

Poo*_*oya 12

您需要指定布局资源ID,因此FragmentTransaction可以将您的片段添加到该资源(容器).

当你打电话给FragmentTransaction.add(Fragment, Tag)你实际呼叫FragmentTransaction.add(0,Fragment,Tag)并记住"0"不是有效的资源ID.所以实际上你的片段没有任何视图.

没有视图的碎片是可能的,所以这个方法实际上用于那些刚刚创建的片段类型,这些片段只是为了进行一些处理而没有与布局的交互