Android中使用RadioGroup实现Fragment的切换

现在的App主页设计,一般采用的是几个按钮加上不同的Fragment切换。这样看起来层次很清晰,功能明确,用户一目了然。

实现这种效果的方法有很多种,网上第三方的库也有很多很多。但是当我们使用第三方库时,往往会受到它或多或少的限制,其实我们用原生的Android控件就可以实现这种效果,Google已经帮我们封装得很好了。我使用的是RadioGroup加上Fragment的切换,话不多说,直接上代码。

 "@+id/radio_group"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_44"
        android:layout_margin="@dimen/dp_10"
        android:orientation="horizontal"
        android:weightSum="3">

        "@+id/btn_product_barcode"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/putaway_operation_left_selector"
            android:button="@null"
            android:gravity="center"
            android:text="@string/wms_col_product_barcode"
            android:textColor="@drawable/putaway_operation_text_selector"/>

        "@+id/btn_box"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/putaway_operation_middle_selector"
            android:button="@null"
            android:gravity="center"
            android:text="@string/wms_col_container_no"
            android:textColor="@drawable/putaway_operation_text_selector"/>

        "@+id/btn_tray"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/putaway_operation_right_selector"
            android:button="@null"
            android:gravity="center"
            android:text="@string/wms_col_pallet_id"
            android:textColor="@drawable/putaway_operation_text_selector"/>
    </RadioGroup>

    "
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

在布局文件中,上面是一个RadioGroup,里面有三个RadioButton,对应就是三个切换按钮。下面的FrameLayout是切换的Fragment。

在Activity中,需要用代码来实现Fragment的切换。必须先设置一个默认的Fragment,然后再根据RadioGroup的check事件来实现切换。

//设置默认选中的Fragment
mBtnProductBarcode.setChecked(true);
final FragmentManager fragmentManager = getSupportFragmentManager();
final FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.fl_content, new ProductBarcodeFragment());
transaction.commit();

//RadioGroup的check事件,来实现Fragment的切换
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                FragmentTransaction transaction = fragmentManager.beginTransaction();
                //根据RadioButton不同的Id来选中不同的Fragment。
                if (checkedId == R.id.btn_product_barcode) {
                    transaction.replace(R.id.fl_content, new ProductBarcodeFragment());
                } else if (checkedId == R.id.btn_box) {
                    transaction.replace(R.id.fl_content, new BoxFragment());
                } else if (checkedId == R.id.btn_tray) {
                    transaction.replace(R.id.fl_content, new TrayFragment());
                }
                transaction.commit();
            }
        });

接着我们可以在各自的Fragment中写自己的布局和逻辑代码,它们虽然都是挂载在一个Activity上面,但是它们互相之间并没有什么影响。代码很简单,希望能帮到你。

你可能感兴趣的:(Android)