2016-09-13 9 views
0

android TabLayoutFragment AFragment Bの切り替え方法アンドロイドで2つのフラグメントを切り替えるにはどうすればいいですか?

ファンクションボタンOnclickを呼び出すと、次のフラグメントに切り替える方法。

フラグメントAのonClick()メソッドでは、私に

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

    } 

} 

答えて

0

を助けてください、これを試してみてください。

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

あなたはマネージャーの断片にFragmentPagerAdapterを持つことができますこのアダプタをviewPagerに設定してsタブをクリックするかスワイプしてタブを変更すると

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

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

あなたは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); 
     } 
    } 

ページを選択する方法:

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

customTab.xmlを作成することを忘れないでください。

よろしくお願いいたします。

+0

selectPageここでは – Dev

+0

selectPageを使用します。私の場合、サイドメニュー(ナビゲーションビュー)をクリックすると使用しました。 – uiltonsantos

関連する問題