簡體   English   中英

顯示不同片段的選項菜單(主要在鄰居片段中)

[英]Options menu showing at different fragments(mostly in neighbour Fragment)

我的查看尋呼機適配器就像:

    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;
    }
}

我如何在java類中設置tablayout和viewpager:

 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));

我得到奇怪的錯誤看起來像這樣:

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

那么我該如何解決這個問題呢? 我從堆棧得到答案,但它沒有解決我的問題,所以任何人都對此有任何了解,請幫助我!

替換此行viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); with tabLayout.setTabsFromPagerAdapter(adapter);

嘗試連接tabLayoutviewPagertabLayout.setupWithViewPager(viewPager)而不是在環手動添加的選項卡。

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");
} }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM