如何在运行时使用多态性根据片段的实例加载片段?

问题描述 投票:0回答:1

我有一个选项卡布局,其中包含3个选项卡项目,每个选项卡都有各自的片段,当被选中时可以在运行时加载。

MainActivity.class:

在此根据所选选项卡的位置调用LoadFragment。
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch (tab.getPosition()) {
                    case 0:
                        LoadFragment(new LocationFragment());
                        break;
                    case 1:
                        LoadFragment(new InformationFragment());
                        break;
                    case 2:
                        LoadFragment(new CommentsFragment());
                        break;
                }
            }

我的问题是如何使用switch

语句使用片段管理器加载适当的片段?我不想具有if else语句层次结构。
private void LoadFragment(Fragment fragment) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

        switch (*some logic here*) {

            case fragment instanceof LocationFragment:
                Log.i("MainActivity", "inside load fragment");
                ft.replace(R.id.coordinate_layout, new LocationFragment());
                break;


            case fragment instanceof InformationFragment:
                ft.replace(R.id.coordinate_layout, new InformationFragment());
                break;


            case fragment instanceof CommentsFragment:
                ft.replace(R.id.coordinate_layout, new CommentsFragment());
                break;

            ft.commit();

        }
    }

我有一个选项卡布局,其中包含3个选项卡项目,每个选项卡都有其自己的片段,在被选中时会在运行时加载。 MainActivity.class:在此根据所选选项卡的位置调用LoadFragment。 tabLayout ....

java android android-fragments switch-statement
1个回答
0
投票

您不需要多次创建实例,您只需传递类型,在加载时就可以决定需要加载哪个片段。

© www.soinside.com 2019 - 2024. All rights reserved.