我有一个HomeActivity,在这里我使用了ViewPager。有两个片段,home1F和home2F来时,滑动的权利。HomeActivity有一个顶部条(由Linerlayout使用),其中有2个图像按钮。当home1F在屏幕上时,会显示一个按钮(另一个是不可见的),而当home2F在屏幕上时,显示另一个按钮,而第一个按钮变得不可见。但是当我运行这个应用程序时,我首先发现第二个按钮是可见的,而不是第一个按钮(当有home1F时)。当我向home2F滑动时,什么都不会发生。当我离开去回到home1F的时候,仍然什么也没有发生。
以下是代码:
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case 0:
//imagebutton-1 visible
//imagebutton-2 invisible
return Home1F.newInstance("FirstFragment, Instance 1");
case 1:
//imagebutton-1 invisible
//imagebutton-2 visible
return Home2F.newInstance("SecondFragment, Instance 1");
default:
//imagebutton-1 visible
//imagebutton-2 invisible
return Home1F.newInstance("FirstFragment, Instance 1");
}}
@Override
public int getCount() {
return 2;
}
}发布于 2018-09-25 11:18:38
尝尝这个
显示imageButton1并将imageButton2隐藏在Activity的onCreate中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scrolling);
imag1.setVisibility(View.VISIBLE);
imag2.setVisibility(View.GONE);因此,当应用程序启动时,它将显示第一个imageButton并隐藏第二个imageButton。
现在,当您在选项卡之间切换时
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==0){
imag1.setVisibility(View.VISIBLE);
imag2.setVisibility(View.GONE);
}
else if(position==1){
imag1.setVisibility(View.GONE);
imag2.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});发布于 2018-09-25 10:42:22
如果要切换正在显示的实际片段,则需要避免使用FragmentPagerAdapter并使用FragmentStatePagerAdapter.。
使用getItemPosition(),我们可以更新片段。在下面的示例中,有更新的片段标题:
ViewPager pager = /* get my ViewPager */;
// assume this actually has stuff in it
final ArrayList<String> titles = new ArrayList<String>();
FragmentManager fm = getSupportFragmentManager();
pager.setAdapter(new FragmentStatePagerAdapter(fm) {
public int getCount() {
return titles.size();
}
public Fragment getItem(int position) {
MyFragment fragment = new MyFragment();
fragment.setTitle(titles.get(position));
return fragment;
}
public int getItemPosition(Object item) {
MyFragment fragment = (MyFragment)item;
String title = fragment.getTitle();
int position = titles.indexOf(title);
if (position >= 0) {
return position;
} else {
return POSITION_NONE;
}
}
});https://stackoverflow.com/questions/52495166
复制相似问题