/ *我只有一个带有父片段的Activity,tab片段包含由setViewPager()添加的子片段
tab1- childfragment,tab2-childfragment2,tab3-chldfragment3,现在在活动中的背板上如果我在tab3上我想要在tab1上
这里应该注意我使用tabfragment这是父片段不使用工具栏中的tablayout * /
@Override public void onBackPressed()
{
//Toast.makeText(this, "exit", Toast.LENGTH_SHORT).show();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START))
{
drawer.closeDrawer(GravityCompat.START);
}
else
{
int fragments=getSupportFragmentManager().getBackStackEntryCount();
if(fragments>0)
{
getSupportFragmentManager().popBackStack();
// Toast.makeText(this, "inside fragment", Toast.LENGTH_SHORT).show();
// super.onBackPressed();
}
else {
if (back_pressed + TIME_DELAY > System.currentTimeMillis()) {
super.onBackPressed();
}
else {
Toast.makeText(getBaseContext(), "Press once again to exit!",
Toast.LENGTH_SHORT).show();
}
}
back_pressed = System.currentTimeMillis();
}
}
//这是我的tablayout_fragment
公共类Tablayout_fragment扩展Fragment {
public static TabLayout tabLayout;
public static ViewPager viewPager;
private FragmentManager fm;
private FragmentTransaction ft;
private int[] tabIcons=
{
R.drawable.ic_home_black_24dp,
R.drawable.ic_vegetables,
R.drawable.ic_grain,
R.drawable.ic_fruits,
R.drawable.ic_cosmetics
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
/**
*Inflate tab_layout and setup Views.
*/
View x = inflater.inflate(R.layout.tab_layout,null);
//为每个标签设置viewpager
tabLayout = (TabLayout) x.findViewById(R.id.tabs);
viewPager = (ViewPager) x.findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
setupTabIcons();
/**
*Set an Apater for the View Pager
*/
// viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
/**
* Now , this is a workaround ,
* The setupWithViewPager dose't works without the runnable .
* Maybe a Support Library Bug .
*/
/* tabLayout.post(new Runnable()
{
@Override
public void run()
{
tabLayout.setupWithViewPager(viewPager);
}
}); */
return x;
}
private void setupTabIcons()
{
tabLayout.getTabAt(0).setIcon(tabIcons[0]);
tabLayout.getTabAt(1).setIcon(tabIcons[1]);
tabLayout.getTabAt(2).setIcon(tabIcons[2]);
tabLayout.getTabAt(3).setIcon(tabIcons[3]);
tabLayout.getTabAt(4).setIcon(tabIcons[4]);
}
private void setupViewPager(ViewPager viewPager)
{
MyAdapter adapter = new MyAdapter(getChildFragmentManager());
adapter.addFrag(new Home_fragments(), " Home ");
adapter.addFrag(new Photo_Fragments(), "vegetables ");
adapter.addFrag(new Movie_fragments()," Food Garins & oil ");
adapter.addFrag(new Movie_fragments()," fruits ");
adapter.addFrag(new Photo_Fragments()," Beauty& hygiene ");
viewPager.setAdapter(adapter);
}
//适配器
class MyAdapter extends FragmentPagerAdapter
{
private final List<Fragment> mFragmentList = new ArrayList<Fragment>();
private final List<String> mFragmentTitleList = new ArrayList<String>();
public MyAdapter(FragmentManager fm)
{
super(fm);
}
/**
* Return fragment with respect to Position .
*/
@Override
public Fragment getItem(int position)
{
return mFragmentList.get(position);
}
@Override
public int getCount()
{
return mFragmentList.size();
}
public void addFrag(Fragment fragment, String title)
{
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
/**
* This method returns the title of the tab according to the position.
*/
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}