【问题标题】:How to call a fragment inside a Fragment?如何在片段中调用片段?
【发布时间】:2019-07-01 11:59:13
【问题描述】:

所以我正在使用其中包含 2 个片段的片段。看看下面的图片:

显示库存列表的第一个片段名为 fragment_purchase_item_list,右侧是 fragment_purchase_list

我想要做的是,当我从右侧片段的工具栏中单击 SCAN 时,fragment_qrscan 将替换 fragment_purchase_item_list。如下图所示:

有人可以查看并检查我的代码为什么不起作用吗?谢谢!

PurchaseListFragment.java

<-- start of code snippet -->
    @Override
    public void onClick(View v) {
        int id = v.getId();

        switch (id){
            case R.id.btn_paypurchasetransaction:
                Fragment chargeFragment = new ChargeFragment();

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.customersales_content, chargeFragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
                break;
            case R.id.layout_transaction_qrcode:
//                Toast.makeText(getActivity(), "Scan Item", Toast.LENGTH_SHORT).show();
                Fragment scanQRCodeFragment = new QRScanFragment();
                FragmentManager fragmentManager1 = getFragmentManager();
                FragmentTransaction fragmentTransaction1 = fragmentManager1.beginTransaction();
                fragmentTransaction1.replace(R.id.inventory_fragment, scanQRCodeFragment);
                fragmentTransaction1.addToBackStack(null);
                fragmentTransaction1.commit();

                break;
            case R.id.layout_transaction_new:
                Toast.makeText(getActivity(), "New Transaction", Toast.LENGTH_SHORT).show();
                break;

        }
    }

<-- end of code snippet>

fragment_sales.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".Fragments.SalesFragment"
    android:orientation="horizontal"
    android:id="@+id/customersales_content">

    <fragment
        android:id="@+id/inventory_fragment"
        android:name="com.example.devcash.Fragments.PurchaseItemListFragment"
        tools:layout="@layout/fragment_purchase_item_list"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3">

    </fragment>

    <View
        style="@style/Divider"
        android:layout_width="1dp"
        android:layout_height="wrap_content" />

    <fragment
        android:id="@+id/purchaselist_fragment"
        android:name="com.example.devcash.Fragments.PurchaseListFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        tools:layout="@layout/fragment_purchase_list">


    </fragment>


</LinearLayout>

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    尝试将getFragmentManager() 替换为getChildFragmentManager()

    【讨论】:

    • 感谢您的回复。添加getChildFragmentManager()后应用会停止
    • 我想是因为我已经在我的fragment_sales.xml中指出了我的片段容器的名称和布局
    • 用框架布局替换 xmls 中的片段,然后尝试片段替换代码
    • 是的,但是如果我这样做,第一个布局将不会自动显示。
    • 它会显示。在父片段的 onCreateView() 中添加该片段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 2018-11-30
    相关资源
    最近更新 更多