2017-08-06 29 views
1

但遇到問題。當我運行應用程序時,我沒有看到我的屏幕滑動,而且我也看不到標籤頁。你能幫 這裏是我的代碼: enter image description hereSwipe Tab不起作用,我在屏幕上看不到

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

     } 
    } 

我在註釋行收到一個錯誤。 這裏是我的傳呼機適配器代碼:

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

在我的XML我只Viewpager,Toolbarand TabLayout。 請幫助。

+0

你可以添加na圖像的問題,我沒有看到你的代碼的任何錯誤,但與na圖像我可以幫助更好。 –

+0

請看看它。 –

回答

0

大概是這樣的:

Home fragments 

嘗試變化這樣:

Fragment fragments 

方法是這樣的:

public void addFragments(Fragment fragments, String titles){ 

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


    } 

所以,你在你有Home fragmentsparamtermethod,當你調用其他因爲parameter與家庭不同的片段是首頁你得到錯誤,修復就像我說的改變參數Fragment fragments。這是一個小錯誤。

2

您需要更改參數的類型addFragments

試試這個:

public void addFragments(Fragment fragments, String titles) 

,而不是

public void addFragments(Home fragments, String titles) 

我希望這可以幫助你

+0

是的,我試過,但沒有結果,thx –

+0

mmmh好吧,我在找別的東西 – 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; 
} 
}