Android fragments 我可以在没有xml的情况下动态地向backbackback添加片段吗?

Android fragments 我可以在没有xml的情况下动态地向backbackback添加片段吗?,android-fragments,fragment-backstack,Android Fragments,Fragment Backstack,我有两个片段,一个是我在主活动中初始化的主片段,另一个是我想在单击第一个片段上的按钮时实例化的片段。我在添加片段2时遇到问题,但我可以毫无问题地替换。我得到的错误是一个我在网上看到过多次以不同方式被问到的错误,但是我找不到一个解决方案来从第一个片段中动态/编程地具体实例化第二个片段 我的代码中有什么遗漏吗 在我的活动中: public void showFragment_1(){ this.rl = new FrameLayout(this); this

我有两个片段,一个是我在主活动中初始化的主片段,另一个是我想在单击第一个片段上的按钮时实例化的片段。我在添加片段2时遇到问题,但我可以毫无问题地替换。我得到的错误是一个我在网上看到过多次以不同方式被问到的错误,但是我找不到一个解决方案来从第一个片段中动态/编程地具体实例化第二个片段

我的代码中有什么遗漏吗

在我的活动中:

    public void showFragment_1(){

        this.rl = new FrameLayout(this);
        this.rl.setLayoutParams(new FrameLayout.LayoutParams((int)Globals.screen_width,(int)(Globals.screen_height)));
        this.rl.setId((int)133);
        mainFragment = new MainFragment(rl);
        setContentView(rl);

        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindow().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        Globals.screen_height = displayMetrics.heightPixels;
        Globals.screen_width = displayMetrics.widthPixels;
        rl.setY(displayMetrics.heightPixels * 0.08f);
        rl.setElevation(5.1f);
        ft.add(rl.getId(),mainFragment, "MainFragment");
        ft.addToBackStack("MainFragment");
        ft.commitAllowingStateLoss();
    }
在片段1中:

private View.OnClickListener displayNewFragment = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int i = 0;
                int id = 0;

                for (Fragment frag : Globals.frag_mgr.getFragments()){
                    if (frag.getTag() == "MainFragment"){
                        FrameLayout fragment_container = new FrameLayout(context);
                        fragment_container.setLayoutParams(new FrameLayout.LayoutParams((int)Globals.screen_width,(int)(Globals.screen_height)));
                        fragment_container.setId((int)2020);
                        switch (v.getId()){
                            // Test for add - not working
                            case 0:
                                LinearLayout ll = new LinearLayout(context);
                                ll.setOrientation(LinearLayout.HORIZONTAL);
                                ll.setId((int)12345);
                                NewFragment newFragment = new NewFragment(frameLayout);
                                getChildFragmentManager().beginTransaction().add(frag_container.getId(), newFragment).addToBackStack(null).commit();
                                break;
                            // Test for replace working, but the view is changing fragment 1
                            case 1:
                                NewFragment newFragment = new NewFragment(fragment_container);
                                getActivity().getSupportFragmentManager().beginTransaction().replace(fragment1.getId(),newFragment).addToBackStack(null).commit();
                                break;
                        }

                    }
                    i+=1;
                }
            }
        };
注意:如果需要,我会共享我的xml,但如果可能的话,我宁愿不共享。我更喜欢动态工作

片段1的xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainFragment" />

片段2的xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/frag_new"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".NewFragment">

    <!-- TODO: Update blank fragment layout -->
    <FrameLayout
        android:id="@id/frag_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />

</FrameLayout>