2017-08-06 16 views
1

問題が発生しました。私はアプリを実行するとき私は私の画面がスワイプされて表示されませんまた、私はタブが表示されません。私はコメント行でエラーを取得しています enter image description hereスワイプのタブが機能しません。画面上に表示されません。

public class MainActivity extends AppCompatActivity { 

     Toolbar toolbar; 
     TabLayout tabLayout; 
     ViewPager viewPager; 
     ViewPagerAdapter viewPagerAdapter; 

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


      toolbar= (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(toolbar); 

      tabLayout= (TabLayout) findViewById(R.id.tablayout); 
      viewPager= (ViewPager) findViewById(R.id.viewpager); 


      viewPagerAdapter=new ViewPagerAdapter(getSupportFragmentManager()); 
      viewPagerAdapter.addFragments(new Home(),"Home"); 
      // viewPagerAdapter.addFragments(new Top(),"Top"); 
      // viewPagerAdapter.addFragments(new Buttom(),"Buttom"); 
      viewPager.setAdapter(viewPagerAdapter); 
      tabLayout.setupWithViewPager(viewPager); 

     } 
    } 

:あなたがここに を助けることができることは私のコードです。私はきた私のXMLだけViewpager、Toolbarand TabLayoutで

public class ViewPagerAdapter extends FragmentPagerAdapter { 

    ArrayList<Fragment> fragments= new ArrayList<>(); 
    ArrayList<String> tabTitles = new ArrayList<>(); 

    public void addFragments(Home fragments, String titles){ 

     this.fragments.add(fragments); 
     this.tabTitles.add(titles); 


    } 

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

    @Override 
    public Fragment getItem(int position) { 
     return fragments.get(position); 
    } 

    @Override 
    public int getCount() { 
     return fragments.size(); 
    } 

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

: はここに私のポケットベルアダプタのコードです。 助けてください。

+0

問題の画像を追加することはできますか?あなたのコードではエラーは表示されませんが、イメージは改善されます。 –

+0

ご覧ください。 –

答えて

0

を助けることを願ってい

public void addFragments(Fragment fragments, String titles) 

代わりの

public void addFragments(Home fragments, String titles) 

これは:

Home fragments 

これに変更をお試しください:

Fragment fragments 

メソッドは、このようなこと:だからあなたはparamterとしてHome fragments持っmethodとしたときに、他の呼び出しで

public void addFragments(Fragment fragments, String titles){ 

     this.fragments.add(fragments); 
     this.tabTitles.add(titles); 


    } 

ホームよりもフラグメントが異なるparameterあなたはエラーが発生します。ちょうど私が変更をパラメータFragment fragmentsに言ったように修正する。それは小さな間違いです。

2

あなたはこの試みるaddFragments

にパラメータのあなたのタイプを変更する必要があります。私は、これはおそらくあなたに

+0

はい私は試しましたが結果はありません –

+0

mmmh ok、何かを探しています – MrLeblond

+0

私の投稿をedtiedしました – MrLeblond

0

これを試してください。

xmlレイアウトファイルにあります。

<android.support.design.widget.TabLayout 
     android:id="@+id/tabLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/colorPrimary" 
     app:tabSelectedTextColor="@android:color/white"/> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewPager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 
あなたmainactivityで

tabLayout.addTab(tabLayout_ordering.newTab().setText("Tab 1")); 
    tabLayout.addTab(tabLayout_ordering.newTab().setText("Tab 2")); 

    viewPager.setAdapter(pagerAdapter); 
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout_ordering)); 


    tabLayout_ordering.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 

      viewPager.setCurrentItem(tab.getPosition()); 

     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

その後、あなたのページャアダプタのクラスを作成します。

public class TabPagerAdapter extends FragmentPagerAdapter { 
public TabPagerAdapter(FragmentManager fm, int tabCount) { 
    super(fm); 

} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      FragmentA fragmentA = new FragmentA(); 
      return fragmentFoods; 
     case 1: 
      FragmentDrinks fragmentA = new FragmentA(); 
      return fragmentA; 

     default: 
      return null; 
    } 

} 

@Override 
public int getCount() { 
    return 2; 
} 
} 
関連する問題