1

我有一个应用程序使用BottomNavigationView在片段之间导航。其中一个片段(SearchFragment)有一个Tab视图,用EasyTabs实现。片段内容没有加载BottomNavigationView FragmentTransaction

当我第一次导航到SearchFragment时,布局会正确加载,所有3个Tab都已填充。问题是当我导航到另一个片段并返回到SearchFragment时,布局不会加载。我在屏幕顶部显示了标签视图,但没有显示内容,我需要在标签之间导航才能使它们逐一显示。

onNavigationItemSelected方法:

@Override 
public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.tab_search: 
      mFragment = new SearchFragment(); 
      break; 
       /*case R.id.tab_history: 
        mFragment = new RadioFragment(); 
        break;*/ 
     case R.id.tab_desc: 
      Bundle bundle = new Bundle(); 
      bundle.putBoolean("fromSetup", false); 
      mFragment = new DescriptionFragment(); 
      mFragment.setArguments(bundle); 
      break; 
       /*case R.id.tab_config: 
        mFragment = new RadioFragment(); 
        break;*/ 
    } 
    final FragmentTransaction transaction = mFragmentManager.beginTransaction(); 
    transaction.replace(R.id.main_container, mFragment).addToBackStack(null).commit(); 
    return true; 
} 

EasyTabsBuilderSearchFragment

EasyTabsBuilder.with(mTabs) 
      .addTabs(
        new TabItem(new SearchByDateFragment(), ""), 
        new TabItem(new SearchByEventFragment(), ""), 
        new TabItem(new SearchByDescriptionFragment(), "") 
      ) 
      .setTabsBackgroundColor(EasyTabsColors.White) 
      .setIndicatorColor(EasyTabsColors.Gray) 
      .setTextColors(EasyTabsColors.Black, EasyTabsColors.White) 
      .addIcons(
        R.drawable.ic_date_range_black_24dp, 
        R.drawable.ic_face_black_24dp, 
        R.drawable.ic_description_24px) 
      .hideAllTitles(true) 
      .Build(); 

回答

2

我买了一个底部的导航和标签布局完全一样的问题。

我发现的唯一解决方案是从片段管理器中删除搜索片段和3选项卡。您可以从您PageChangeListener

 @Override 
     public void onPageSelected(int position) { 

      if (position != 3 && position != 2) { 
       List<Fragment> fragments = getSupportFragmentManager().getFragments(); 
       for (int i = fragments.size() -1; i >= 0; i--) { 
        if (fragments.get(i) != null) { 
         if (fragments.get(i).getClass() == OrderInProgressFragment.class || 
           fragments.get(i).getClass() == OrderFinishFragment.class || 
           fragments.get(i).getClass() == OrderFragment.class) { 
          getSupportFragmentManager().beginTransaction().remove(fragments.get(i)).commit(); 
          getSupportFragmentManager().executePendingTransactions(); 
         } 
        } 
       } 
      } 

      bottomNavigationView.getMenu().getItem(position).setChecked(true); 
     } 

我得到了我的bottomNavigation 4页,我的片段删除是在3位做到这一点的使用onPageSelected。因此,如果是检查,如果我目前正在使用我的片段,或者如果我在上一个选项卡上,如果不是,我删除OrderFragment其中包含选项卡和其他两个选项卡

+0

此方法不适用于我,但我用你的想法!在SearchFragment的'onDestroyView'方法中,我删除了与SearchFragment相关的所有碎片。 – Minoru

相关问题