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

相關問題