Android 如何在FragmentA中编程FragmentB?

Android 如何在FragmentA中编程FragmentB?,android,android-fragments,Android,Android Fragments,我正在申请一个学校项目,在FragmentA中编程某个FragmentB时遇到了麻烦。麻烦更大的是,即使我做了广泛的搜索,我也不知道该怎么做 FragmentA到main活动正常工作(或者正常工作,因为不会发出任何错误)。我在MainActivity.java中使用了SwitchCase,它可以正常工作 MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) {

我正在申请一个学校项目,在FragmentA中编程某个FragmentB时遇到了麻烦。麻烦更大的是,即使我做了广泛的搜索,我也不知道该怎么做

FragmentA
main活动
正常工作(或者正常工作,因为不会发出任何错误)。我在
MainActivity.java
中使用了SwitchCase,它可以正常工作

MainActivity.java


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BottomNavigationView bottomNavigationView = findViewById(R.id.navigation);

        bottomNavigationView.setOnNavigationItemSelectedListener
                (new BottomNavigationView.OnNavigationItemSelectedListener() {

                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                        Fragment selectedFragment = null;
                        switch (item.getItemId()) {
                            case R.id.navigation_home:
                                selectedFragment = HomeScreenFragment.newInstance();
                                break;
                            case R.id.navigation_profile:
                                selectedFragment = ProfileScreenFragment.newInstance();
                                break;
                            case R.id.navigation_notifications:
                                selectedFragment = NotifScreenFragment.newInstance();
                                break;
                        }
                        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                        transaction.replace(R.id.frame_layout, selectedFragment);
                        transaction.commit();
                        return true;
                    }
                });

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.frame_layout, HomeScreenFragment.newInstance());
        transaction.commit();
    }
}
ProfileScreenFragment.java(这就是我想要的FragmentB)

fragment\u profile\u screen2.xml(frame\u布局是我想要放置
FragmentB
的地方)

xmlns:app=”http://schemas.android.com/apk/res-auto"
xmlns:tools=”http://schemas.android.com/tools"
android:layout\u width=“匹配父项”
android:layout\u height=“match\u parent”>
我应该如何或如何为
FragmentB
编写代码,并将其放入
ProfileScreenFragment.java

是否也可以在
ProfileScreenFragment.java
中为选项卡使用SwitchCase


非常感谢你。如果我使用的代码中有任何需要澄清的地方,请随时询问。我仍在学习所有这些的基础知识,因此我对代码持50/50的看法。

在ProfileScreenFragment中添加此片段

@Override
protected void onViewCreated(View view, Bundle savedInstanceState) {
    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
    transaction.replace(R.id.frame_layout, FragmentB.newInstance());
    transaction.commit();
}
对于选项卡布局,可以添加选项卡更改侦听器

TabLayout tabLayout = view.findViewById(R.id.tabs);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        switch (tab.getPosition()) {
            case 0: // Handle 1st tab item
                break;
            case 1: // Handle 2nd tab item
                break;
            case 2: // Handle 3rd tab item
                break;
            case 3: // Handle 4th tab item
                break;
        }
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
});

非常感谢。成功了。如果可以的话,请回答我的后续问题。My fragment_profile_screen2.xml有一个AppBar>Toolbar>TabsItem(4项)。我是否能够像使用MainActivity.java那样使用SwitchCase来实现它?因为使用SwitchCases看起来更容易。谢谢,很好。感谢您在这个答案有效时投票表决。:)是的,你可以。每个片段都有自己的视图,因此您可以将其称为view.findByViewId。很抱歉,您能解释一下吗(我想将SwitchCase放在ProfileScreenFragment.java中,因为fragment\u profile\u screen2.xml已连接到它。我应该如何启动它?工具栏?表格布局?因为它是如何在MainActivity.java中启动的?为什么要这样做?您希望在“子片段”中执行什么操作您需要在it配置文件屏幕中显示哪些内容?MainActivity仅具有BottomNavigationView,我使用了导航项的片段,因此当用户点击(例如:)在NavigationView中,片段_Profile _screen2.xml和ProfileScreenFragment被调用。我认为当一个片段调用另一个片段时,情况会是一样的,或者我错了吗?如果没有多大意义,我很抱歉。
@Override
protected void onViewCreated(View view, Bundle savedInstanceState) {
    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
    transaction.replace(R.id.frame_layout, FragmentB.newInstance());
    transaction.commit();
}
TabLayout tabLayout = view.findViewById(R.id.tabs);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        switch (tab.getPosition()) {
            case 0: // Handle 1st tab item
                break;
            case 1: // Handle 2nd tab item
                break;
            case 2: // Handle 3rd tab item
                break;
            case 3: // Handle 4th tab item
                break;
        }
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
});