![](/img/trans.png)
[英]The tab Indicator doesn't work when I swipe view but works when I select a particular Tab
[英]Swipe Tab doesn't work, i don't see that on the screen
但遇到一个问题。 当我运行该应用程序时,我看不到屏幕刷卡,也看不到选项卡。 您能帮我这是我的代码:
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,Toolbar和TabLayout。 请帮忙。
您需要在addFragments
更改参数类型
尝试这个 :
public void addFragments(Fragment fragments, String titles)
代替
public void addFragments(Home fragments, String titles)
希望对您有帮助
大概是这样的:
Home fragments
尝试更改为此:
Fragment fragments
方法是这样的:
public void addFragments(Fragment fragments, String titles){
this.fragments.add(fragments);
this.tabTitles.add(titles);
}
因此,在该method
您将Home fragments
作为paramter
,当您调用与Home不同的其他片段时,因为parameter
是Home,您会得到错误,如我所说的将参数更改为Fragment fragments
一样,可以进行修复。 这是一个小错误。
尝试这个。
在您的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"/>
在您的主要活动中
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.