9

TabLayoutとViewPager - タブをクリックすると、引き出し項目間をスワイプしても機能しません。TabLayoutとViewPagerタブは、引き出し項目間をスワイプした後に機能しません。

私はスライド式の引き出しとTablayoutを持つアプリで動作します。 このチュートリアルはFor Sliding DrawerFor TabLayoutです。

インサイドスライディング引き出し

  1. タスクリスト - >TabLayout(Tabs(Today,Monthly,Yearly))
  2. 設定
  3. 注文は

私はスライディング引き出しとTablayoutの間で問題があります。 初めてビューアビューアが正しく読み込まれます。しかし、私は(設定の断片)のような次の引き出しの項目に移動すると、タスクリストのタブに戻って断片ビューページャは、任意のフラグメントを読み込むことができません。ここで

Javaコード

public class TaskListFragment extends Fragment { 
private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 

public TaskListFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

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

    viewPager = (ViewPager)rootView.findViewById(R.id.viewpager); 
    tabLayout = (TabLayout)rootView.findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 

     } 

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

     } 

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

     } 
    }); 

    // Inflate the layout for this fragment 
    return rootView; 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager()); 
    adapter.addFragment(new Mypage_TodayFragment(), "TODAY"); 
    adapter.addFragment(new Mypage_TodayFragment(), "WEEKLY"); 
    adapter.addFragment(new Mypage_TodayFragment(), "MONTHLY"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 
@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
} 

はここ.XMLコード

<android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="262dp" 
     android:id="@+id/view" 
     android:layout_weight="0.16"> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="fixed" 
      app:tabGravity="fill" 
      app:tabBackground="@drawable/mytabselector" 
      app:tabIndicatorColor="@color/Orange" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="50dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

     </android.support.design.widget.CoordinatorLayout> 

事前に感謝します!

+3

'FragmentStatePagerAdapter'を' F ragmentPagerAdapter' –

答えて

13

あなたがフラグメントでviewpagerを持っているので、これは、このviewpagerを作るために使用されるべきであるとフラグメントマネージャである

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());

を行う代わりに、

ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());

のこれを試してみてくださいフラグメントトランザクションはchildfragmentmanagerである必要があります

+2

ありがとう!私のためのその仕事...私に別のものを教えてくださいgetFragmentManager()AppCompatActivityで動作しない??? –

+0

フラグメントをフラグメントにロードする(ビューページャーがフラグメントをロードし、ビューページャー自体が別のフラグメントであるため)、フラグメントトランザクションを実行するためにchildfragmentmanagerを使用する必要があります。あなたはアクティビティが親であり、そのフラグメントはその子であり、子はfragmentManagerを使用できません。fragmentManagerはアクティビティ用で、子はchildFragmentManagerを使用する必要があります – Bhargav

関連する問題