android - 添加具有 0 containerViewId 的 fragment

标签 android android-fragments

当我调用FragmentTransaction add (Fragment fragment, String tag) 时android在哪里添加 fragment

我写了这段代码,但看不到 fragment 的布局。它显示一个空白屏幕。

 @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

最佳答案

您需要指定布局资源 ID,以便 FragmentTransaction 可以将您的 fragment 添加到该资源(容器)。

当您调用 FragmentTransaction.add(Fragment, Tag) 时,您实际上调用的是 FragmentTransaction.add(0,Fragment,Tag) 并记住“0”不是一个有效的资源 ID。所以实际上你的 fragment 是在没有任何 View 的情况下创建的。

可能有没有 View 的 fragment ,所以这个方法实际上用于那些刚刚创建以进行一些处理但与布局没有交互的 fragment 类型

关于android - 添加具有 0 containerViewId 的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36468050/

相关文章:

Android - 何时调用 performTraversals?

android - Android NDK:断言失败:LOCAL_MAKEFILE未定义

打开外部 URL 时出现 "startActivityForResult(Intent,int) in Fragment has been deprecated"的 Java 解决方案?

java - ClassCastException:使用 DialogFragment 时应用程序崩溃

android - 如何在 fragment 中打开键盘

android - 接收消息收到来自 GCM 服务的确认

android - ListView 有 "blank"行

java - 在 google maps api v2 中膨胀 fragment 异常

android - Admob 横幅在多个 fragment 中的性能问题

android - 改造:将运行时参数添加到界面?