2016-09-13 5 views
0

wie zwischen Fragment A und Fragment B in android TabLayout wechseln.Wie zwischen zwei Fragmenten in Android TabLayout wechseln?

wie zum nächsten Fragmente wechseln, wenn Fargment Knopf Onclick genannt wird.

Bitte helfen Sie mir

enter image description here

enter image description here

package com.digi.global.globalhub.fragment.offer; 


import android.content.Context; 
import android.graphics.Color; 
import android.graphics.PorterDuff; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.PopupMenu; 
import android.support.v7.widget.Toolbar; 
import android.view.LayoutInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.digi.global.globalhub.R; 
import com.digi.global.globalhub.Utility.M; 
import com.digi.global.globalhub.listener.FilterListener; 
import com.digi.global.globalhub.listener.FragmentMove; 
import com.digi.global.globalhub.listener.OfferFilter; 


public class OfferFragmentActivity extends Fragment implements View.OnClickListener{ 
    private static final String ARG_PARAM1 = "param1"; 
    private static final String ARG_PARAM2 = "param2"; 
    private String mParam1; 
    private String mParam2; 

    PagerAdapter adapter; 
    ViewPager viewPager; 
    TabLayout tabLayout; 
    Context context; 
    Toolbar toolbar; 
    ImageView bizMenu; 
    PopupMenu popup; 
    public static OfferFragmentActivity mInstance = null; 

    public OfferFragmentActivity() { 
     // Required empty public constructor 
    } 
    public static OfferFragmentActivity newInstance(String param1, String param2) { 
     OfferFragmentActivity fragment = new OfferFragmentActivity(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 

     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 
     } 
     context = this.getContext(); 
     mInstance = this; 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     final View view =inflater.inflate(R.layout.fragment_offer, container, false); 
     viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
     adapter = new PagerAdapter(getChildFragmentManager(), getContext()); 
     tabLayout = (TabLayout) view.findViewById(R.id.tablayout); 
     viewPager.setAdapter(adapter); 
     tabLayout.setupWithViewPager(viewPager); 
     toolbar = (Toolbar) view.findViewById(R.id.toolbar); 

     bizMenu = (ImageView) view.findViewById(R.id.bizMenu); 
     bizMenu.setVisibility(View.VISIBLE); 
     bizMenu.setOnClickListener(this); 


     ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); 
     //toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.biz_ic, android.R.style.Theme_DeviceDefault)); 
     ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true); 
     ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); 


     final Drawable upArrow = getResources().getDrawable(R.mipmap.ic_menu_white_36dp); 
     upArrow.setColorFilter(Color.parseColor("#B68426"), PorterDuff.Mode.SRC_ATOP); 
     ((AppCompatActivity)getActivity()).getSupportActionBar().setHomeAsUpIndicator(upArrow); 
     ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle(getString(R.string.Offers)); 


     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(final TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 

      } 
      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 
      } 
      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 
      } 
     }); 
     return view; 
    } 

    @Override 
    public void onClick(View v) { 

    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     Fragment fragment = (Fragment) adapter.instantiateItem(viewPager, viewPager.getCurrentItem()); 
     if(fragment instanceof OfferFilter){ 
      switch (item.getItemId()) { 
       case R.id.bizTravel: 
        ((OfferFilter) fragment).onFilterBizTravel("bizTravel"); 

        return true; 
       case R.id.bizAssistance: 
        ((OfferFilter) fragment).onFilterAssistance("bizAssistance"); 
        return true; 
       case R.id.bizSolution: 
        ((OfferFilter) fragment).onFilterSolution("bizSolution"); 
        return true; 
       case R.id.partners: 
        ((OfferFilter) fragment).onFilterPartner("partners"); 
        return true; 
       case R.id.favoutites: 
        ((OfferFilter) fragment).onFilterFavouritesBiz("favoutites"); 
        return true; 
      } 
      return false; 
     } 
     return super.onOptionsItemSelected(item); 
    } 


    class PagerAdapter extends FragmentStatePagerAdapter { 
     String tabTitles[] = getResources().getStringArray(R.array.offerTab); 
     Context context; 

     public PagerAdapter(FragmentManager fm, Context context) { 
      super(fm); 
      this.context = context; 
     } 
     @Override 
     public int getCount() { 
      return tabTitles.length; 
     } 
     @Override 
     public Fragment getItem(int position) { 

      /* FragmentMove fragmentChanges = (FragmentMove) adapter.instantiateItem(viewPager, 2); 
      if(fragmentChanges instanceof FragmentMove) { 
       ((FragmentMove) fragmentChanges).fragmentChanges(); 
      }*/ 
      switch (position) { 
       case 0: 
        return new FragmentOne(); 
       case 1: 
        return new FragmentTWO(); 
       case 2: 
        return new FragmentThree(); 
      } 
      return null; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return tabTitles[position]; 
     } 

     /* public View getTabView(int position) { 
      View tab = LayoutInflater.from(getContext()).inflate(R.layout.tab_text_layout, null); 
      TextView tv = (TextView) tab.findViewById(R.id.tabText); 
      tv.setText(tabTitles[position]); 
      return tab; 
     }*/ 

    } 

} 

Antwort

0

In Fragment A des onClick() -Methode, versuchen Sie dies:

TabActivity tabs = (TabActivity) getParent(); 
    tabs.getTabHost().setCurrentTab(2); 
1

Sie können einen FragmentPagerAdapter zu Manager-Fragmente und setze diesen Adapter in ViewPager um s Teile Fragmente, wenn Sie auf Tabs klicken oder Swipe, um Tabs zu ändern.

FragmentPagerAdapter:

public class TabLayoutViewPagerAdapter extends FragmentPagerAdapter { 

private final int PAGE_COUNT = 3; 
private final String[] mTabsTitle = {"Fragment A", "Fragment B, "Fragment C"}; 
private Context context; 
private int[] mTabsIcons = { 
     R.drawable.a, 
     R.drawable.b, 
     R.drawable.c}; 

public TabLayoutViewPagerAdapter(FragmentManager fm, Context context) { 
    super(fm); 
    this.context = context; 
} 

public View getTabView(int position) { 
    View view = LayoutInflater.from(context).inflate(R.layout.custom_tab, null); 
    TextView title = (TextView) view.findViewById(R.id.title); 
    title.setText(mTabsTitle[position]); 
    title.setSingleLine(true); 
    ImageView icon = (ImageView) view.findViewById(R.id.icon); 
    icon.setImageResource(mTabsIcons[position]); 
    return view; 
} 

@Override 
public Fragment getItem(int pos) { 
    switch (pos) { 

     case 0: 
      return new FragmentA(); 
     case 1: 
      return new FragmentB(); 
     case 2: 
      return new FragmentC(); 

    } 
    return null; 
} 

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

@Override 
public CharSequence getPageTitle(int position) { 
    return mTabsTitle[position]; 
}} 

Wie Sie es verwenden:

ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager); 
    TabLayoutViewPagerAdapter pagerAdapter = new TabLayoutViewPagerAdapter(getSupportFragmentManager(), this); 
    if (viewPager != null) { 
     viewPager.setAdapter(pagerAdapter); 
    } 

Sie benötigen einen TabLayout:

mTabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    if (mTabLayout != null) { 
     mTabLayout.setupWithViewPager(viewPager); 
     //populate your tabs 
     for (int i = 0; i < mTabLayout.getTabCount(); i++) { 
      TabLayout.Tab tab = mTabLayout.getTabAt(i); 
      if (tab != null) 
       tab.setCustomView(pagerAdapter.getTabView(i)); 
     } 

     TabLayout.Tab tab = mTabLayout.getTabAt(0); 
     if (tab != null && tab.getCustomView() != null) { 
      tab.getCustomView().setSelected(true); 
     } 
    } 

Wie du eine Seite wählen:

private void selectPage(int pageIndex) { 
    mTabLayout.setScrollPosition(pageIndex, 0f, true); 
    viewPager.setCurrentItem(pageIndex); 
} 

Vergessen Sie nicht, Ihre customTab.xml zu erstellen.

Mit freundlichen Grüßen.

+0

selectPage wo – Dev

+0

selectPage zu verwenden, in meinem Fall, habe ich, wenn ich auf sideMenu klicken (Navigationsansicht). – uiltonsantos

Verwandte Themen