2016-05-31 5 views
0

私はタブ付きのアクティビティを持っています。私は、次のコードを持って活動するのonCreateメソッドで:フラグメントまたはViewPagerが正しく機能していません

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.detail_team); 

     Intent i = getIntent(); 
     myTeam = i.getParcelableExtra("TeamObject"); 
     //MatchAsyncTask mat = new MatchAsyncTask()execute(); 

     final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarTeam); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.vpTeam); 
     setupViewPager(viewPager); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabsTeam); 
     tabLayout.setupWithViewPager(viewPager); 

     CollapsingToolbarLayout collapsingToolbar = 
       (CollapsingToolbarLayout) findViewById(R.id.collapse_toolbar_team); 
     collapsingToolbar.setTitle(myTeam.getName()); 

     ImageView img = (ImageView)findViewById(R.id.team_detail_header); 
     String strImg1 = "f"+String.valueOf(myTeam.getId()); 
     int resId1 = getResources().getIdentifier(strImg1, "drawable", getPackageName()); 
     img.setImageResource(resId1); 

    } 

setWithViewPager機能のコードはこれです:

private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 

     Bundle args = new Bundle(); 
     args.putInt("TeamId",myTeam.getId()); 
     PlayerFragment pf = new PlayerFragment(); 
     pf.setArguments(args); 

     InfoMatchFragment partidos = new InfoMatchFragment(); 

     adapter.addFrag(pf, "Plantel"); 
     adapter.addFrag(partidos, "Partidos"); 
     viewPager.setAdapter(adapter); 
    } 

そしてViewPagerためのアダプタクラスは次のとおりです。

static class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

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

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 

問題は私がアクティビティを開始し、最初のフラグメントが最初のタブに読み込まれているときに発生しますが、2番目のタブにスワイプすると同じフラグメントが表示されています。

ありがとうございました。

答えて

0

変更しますアダプター方式と

@Override 
     public Fragment getItem(int position) { 
     switch (position) { 
     case 0: 
     PlayerFragment pf = new PlayerFragment(); 
      //pf.setArguments(args); 
       return pf; 
      case 1: 
       return new InfoMatchFragment(); 

      default: 
       return null; 
     } 
     } 
この方法を試してみてください
関連する問題