android-fragments 为什么片段只在创建时和Tab键切换后显示?

slmsl1lt  于 2022-11-14  发布在  Android
关注(0)|答案(2)|浏览(150)

所以,在目前的状态下,我可以看到里面的片段,显示我 Boot 时的虚拟电话;然而,一旦我从我的抽屉切换到不同的片段,然后再次切换回片段,使用tableLayout,它什么也没有显示!另外,在标签之间切换似乎确实修复了它。
You can see the image here
下面是代码:

package com.example.teamapp;

import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager.widget.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.tabs.TabItem;
import com.google.android.material.tabs.TabLayout;

public class HomeFragmentNav extends Fragment {

    FragmentManager fragmentManagerHome;
    ViewPager viewPager;
    TabLayout tableLayout;
    PagerAdapter pagerAdapter;
    TabItem TeamsTab;
    TabItem ChatTab;
    View v;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.fragment_home_nav, container, false);

        tableLayout = v.findViewById(R.id.TabBar);
        TeamsTab = v.findViewById(R.id.TeamsTab);
        ChatTab = v.findViewById(R.id.ChatTab);
        viewPager = v.findViewById(R.id.ViewPager);
        tableLayout.getTabAt(1).select();
        tableLayout.getTabAt(0).select();
        fragmentManagerHome = getFragmentManager();
        pagerAdapter = new PagerAdapter(fragmentManagerHome,
            tableLayout.getTabCount(), getContext());
        viewPager.setAdapter(pagerAdapter);
        tableLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setAdapter(pagerAdapter);
                viewPager.setCurrentItem(tab.getPosition());

            }

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

            }

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

            }
        });
        return v;
    }

    @Override
    public void onResume() {
        super.onResume();
        tableLayout = v.findViewById(R.id.TabBar);
        TeamsTab = v.findViewById(R.id.TeamsTab);
        ChatTab = v.findViewById(R.id.ChatTab);
        viewPager = v.findViewById(R.id.ViewPager);
        tableLayout.getTabAt(1).select();
        tableLayout.getTabAt(0).select();
        fragmentManagerHome = getFragmentManager();
        pagerAdapter = new PagerAdapter(fragmentManagerHome,
            tableLayout.getTabCount(), getContext());
        viewPager.setAdapter(pagerAdapter);
    }
}

谢谢你的帮助。

sbtkgmzw

sbtkgmzw1#

防止页面刷新。
(2)设置屏幕外页面限制;

frebpwbc

frebpwbc2#

发现问题,我使用getFragmentManager()而不是getChildFragmentManager()

相关问题