1

マイビューのページャのアダプタは次のようである:私は取得していますオプションメニューが

for (int i = 0; i < 5; i++) { 
      tabLayout.addTab(tabLayout.newTab()); 
     } 

    Pager adapter = new Pager(getSupportFragmentManager(), tabLayout.getTabCount()); 
    viewPager.setAdapter(adapter); 
    viewPager.beginFakeDrag(); 
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

:私は、Javaクラスのtablayoutとviewpagerを設定する方法

public Pager(FragmentManager fm, int tabCount) { 
     super(fm); 
     this.tabCount = tabCount; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return new frag1(); 
      case 1: 
       return new frag2(); 
      case 2: 
       return new frag1(); 
      case 3: 
       return new frag2(); 
      case 4: 
       return new frag1(); 
      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     return tabCount; 
    } 
} 

奇妙なエラーは次のようになります。

W/FragmentManager: moveToState: Fragment state for frag2{2428405 #1 id=0x7f0c006a} not updated inline; expected state 3 found 2 

ので、どのように私はこの問題を解決することができますか? 私はスタックから回答を得ていますが、問題は解決しません。 誰もがこれに関する知識を持っていますので、親切に助けてください!

+0

このリンクを試してください。 http://stackoverflow.com/questions/35783098/android-viewpager-loading-incorrect-fragments – QEMU

+0

私もこれを試しましたが、私にとってはうまくいかなかったのです! @Manish – Sam

答えて

0

tabLayout.setTabsFromPagerAdapter(adapter);

+0

まず、私はこのメソッドを使用し、次にスタックからaddOnPageChangeListenerを変更します。 :) @Manish – Sam

+0

Ok..iは自分のコードを共有します。私は全く同じことをやっています。あなたのXMLにはViewPagerのTabLayoutが含まれているので、 – QEMU

+0

よろしいですか?手伝ってくれてありがとう。 @Manish – Sam

0

とこの行viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));を交換はtabLayout.setupWithViewPager(viewPager)と代わりのループで手動タブを追加viewPagertabLayoutを接続してみてください。

0

available_bus_fragment.xml

<android.support.design.widget.TabLayout 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:tabGravity="fill" 
    android:background="#d4d4d4" 
    app:tabMode="fixed" /> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#e8e8e8" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

ViewPagerAdapter.javaはViewPagerためのアダプタです。

public class ViewPagerAdapter extends FragmentStatePagerAdapter { 


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

@Override 
public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

@Override 
public int getCount() { 
    return 3; 
} 


@Override 
public CharSequence getPageTitle(int position) { 
    return String.valueOf(position); 
} 

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      Fragment tab1 = new YourFragment1(); 
      return tab1; 
     case 1: 
      Fragment tab2 = new YourFragment1(); 
      return tab2; 
     case 2: 
      Fragment tab3 = new YourFragment1(); 
      return tab3; 
    } 
    return null; 
}} 

これは、Viewpagerのアダプタを設定するクラスです。

public class MyFragment extends Fragment { 
View rootView; 
ViewPagerAdapter adapter; 
TabLayout tabLayout; 
ViewPager viewPager; 
private int[] tabIcons = { 
     R.drawable.tabclock, 
     R.drawable.clock, 
     R.drawable.tab_rupee 
}; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    rootView = getLayoutInflater(savedInstanceState).inflate(R.layout.available_bus_fragment, null); 
    tabLayout = (TabLayout) rootView.findViewById(R.id.tabs); 


    viewPager = (ViewPager) rootView.findViewById(R.id.viewpager); 
    adapter = new ViewPagerAdapter(getChildFragmentManager()); 

    viewPager.setAdapter(adapter); 
    tabLayout.setupWithViewPager(viewPager); 
    tabLayout.setTabsFromPagerAdapter(adapter); 
    setupTabIcons(); 

    return rootView; 
} 

private void setupTabIcons() { 
    tabLayout.getTabAt(0).setIcon(tabIcons[0]).setTag("Departure").setText("Departure"); 
    tabLayout.getTabAt(1).setIcon(tabIcons[1]).setTag("Duration").setText("Duration"); 
    tabLayout.getTabAt(2).setIcon(tabIcons[2]).setTag("Price").setText("Price"); 
} } 
関連する問題