Android 在片段之间切换时清空RecyclerView

Android 在片段之间切换时清空RecyclerView,android,android-fragments,android-recyclerview,Android,Android Fragments,Android Recyclerview,我试图在片段中实现表格布局,该片段已经是底部导航视图的一部分,在导航栏中导航时遇到问题,在片段中有一个回收器视图,该片段是表格布局的一部分,现在,当我通过BottomNavigation在片段之间导航时,recyclerview变为空,logcat中没有任何内容 main活动 public class MainActivity extends AppCompatActivity { private BottomNavigationView navigation; @Over

我试图在
片段
中实现
表格布局
,该片段已经是
底部导航视图
的一部分,在导航栏中导航时遇到问题,在
片段
中有一个
回收器视图
,该片段是
表格布局
的一部分,现在,当我通过
BottomNavigation
在片段之间导航时,
recyclerview
变为空,
logcat
中没有任何内容

main活动

public class MainActivity extends AppCompatActivity {

    private BottomNavigationView navigation;

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

        loadFragment(new HomeFragment());

    }

    private void initComponent() {


        navigation = findViewById(R.id.navigation);
        BottomNavigationViewHelper.disableShiftMode(navigation);


        navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

               // ViewAnimation.fadeOutIn(fragme);

                Fragment fragment = null;

                switch (item.getItemId()) {
                    case R.id.home_main:
                        fragment = new HomeFragment();
                        break;

                    case R.id.search:
                        fragment = new SearchFragment();
                        break;

                    case R.id.notifications:
                        fragment = new NotificationsFragment();
                        break;

                    case R.id.favourite:
                        fragment = new FavouriteFragment();
                        break;
                }

                return loadFragment(fragment);
            }
        });

        findViewById(R.id.bt_menu).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

    }



    private boolean loadFragment(Fragment fragment) {

        if (fragment != null) {

            getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.fragment_container, fragment)
                    .commit();

            return true;

        }
        return false;
    }
HomeFragment

public class HomeFragment extends Fragment {

    private ViewPager view_pager;
    private TabLayout tab_layout;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_home, null);

        view_pager = view.findViewById(R.id.view_pager);

        setupViewPager(view_pager);

        tab_layout = view.findViewById(R.id.tab_layout);
        tab_layout.setupWithViewPager(view_pager);

        return view;
    }

    private void setupViewPager(ViewPager viewPager) {

        SectionsPagerAdapter adapter = new SectionsPagerAdapter(getActivity().getSupportFragmentManager());



        adapter.addFragment(new PresetsFragment(), "Presets");
/*        adapter.addFragment(new PresetsFragment(), "Tutorials");
        adapter.addFragment(new PresetsFragment(), "Categories");*/
        viewPager.setAdapter(adapter);
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        tab_layout = null;
        view_pager = null;
    }
public class PresetsFragment extends Fragment {

    RecyclerView recyclerView;
    PresetsAdapter presetsAdapter;

    String[] presetList = {"s", "s", "d", "d"};


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_presets, container, false);
        recyclerView = view.findViewById(R.id.presetsRecyclerView);

        presetsAdapter = new PresetsAdapter(presetList, getActivity());
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setAdapter(presetsAdapter);
        //presetsAdapter.notifyDataSetChanged();

        return view;
    }

    @Override
    public void onResume() {
        super.onResume();


    }
}
预设片段

public class HomeFragment extends Fragment {

    private ViewPager view_pager;
    private TabLayout tab_layout;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_home, null);

        view_pager = view.findViewById(R.id.view_pager);

        setupViewPager(view_pager);

        tab_layout = view.findViewById(R.id.tab_layout);
        tab_layout.setupWithViewPager(view_pager);

        return view;
    }

    private void setupViewPager(ViewPager viewPager) {

        SectionsPagerAdapter adapter = new SectionsPagerAdapter(getActivity().getSupportFragmentManager());



        adapter.addFragment(new PresetsFragment(), "Presets");
/*        adapter.addFragment(new PresetsFragment(), "Tutorials");
        adapter.addFragment(new PresetsFragment(), "Categories");*/
        viewPager.setAdapter(adapter);
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        tab_layout = null;
        view_pager = null;
    }
public class PresetsFragment extends Fragment {

    RecyclerView recyclerView;
    PresetsAdapter presetsAdapter;

    String[] presetList = {"s", "s", "d", "d"};


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_presets, container, false);
        recyclerView = view.findViewById(R.id.presetsRecyclerView);

        presetsAdapter = new PresetsAdapter(presetList, getActivity());
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setAdapter(presetsAdapter);
        //presetsAdapter.notifyDataSetChanged();

        return view;
    }

    @Override
    public void onResume() {
        super.onResume();


    }
}

我花了这么多时间想出来,但仍然无法得到它。

从您的
加载片段
方法中,您正在使用
框架布局
并在
底部导航
选择中替换片段。当您这样做时,您每次都在创建一个新片段,如果您使用
查看页面
它可以正常工作您

预设片段
->可能尝试将适配器和回收器初始化移动到
onViewCreated()
方法您的问题是图像加载需要几秒钟,对吗?不,不是几秒钟,当我回到那一步时,它是完全空的。。