0

私は2つの断片(同じクラス - PlayerFragment)を持っていると私はこの方法でViewPagerを設定すると、正しく表示されない:TabLayoutとViewPagerは二つの断片

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

     Bundle args1 = new Bundle(); 
     args1.putInt("Id",1); 
     PlayerFragment pf1 = new PlayerFragment(); 
     pf1.setArguments(args1); 
     adapter.addFrag(pf1, "Players 1"); 

     Bundle args2 = new Bundle(); 
     args2.putInt("Id",2); 
     PlayerFragment pf2 = new PlayerFragment(); 
     pf2.setArguments(args2); 
     adapter.addFrag(pf2, "Players 2"); 

     viewPager.setAdapter(adapter); 
    } 

私は2つのタブを持っていますが、唯一の最初のタブは私が内容を示し、もう一方のタブは空です。 最初のタブは私に2番目のタブの内容を示しています。

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

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabsTeam); 
     tabLayout.setupWithViewPager(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); 
     } 
    } 

編集:これはPlayerFragment

パブリッククラスPlayerFragmentが

答えて

0

あなたはPlayerFragmentのコードを投稿することができます{

private ProgressDialog progressDialog; 
private List<Player> myPlayers = new ArrayList<>(); 
private int myTeamId = 14; 

public PlayerFragment(){ 

} 

public static PlayerFragment newInstance(int someInt) { 
    PlayerFragment myFragment = new PlayerFragment(); 

    Bundle args = new Bundle(); 
    args.putInt("TeamId", someInt); 
    myFragment.setArguments(args); 

    return myFragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    Bundle args = getArguments(); 
    if(args!=null) { 
     myTeamId = args.getInt("TeamId"); 
    } 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_player, container, false); 
    new BackgroundAsyncTask().execute(); 
    return view; 
} 

}フラグメントを拡張しているのですか?私は間違いなく、そのクラスの変数が静的であることが間違いないと確信しています。また、フラグメントを作成するために "new instance()"という方法を使用しようとします。 - >Best practice for instantiating a new Android Fragment

+0

私は静的変数を持っていませんし、newInstanceが明確に定義されているかわかりません。ありがとう! –

+0

PlayerFragmentのコードを追加します。 –

+0

これでフラグメントを初期化する必要があります:pf1 = PlayerFragment.newInstance(5); adapter.addFrag(pf1、 "Players 1"); –

関連する問題