Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当返回到旧的视图寻呼机片段时,ImageButtons保持不变_Android_Android Viewpager_Android Imagebutton_Android Pageradapter - Fatal编程技术网

Android 当返回到旧的视图寻呼机片段时,ImageButtons保持不变

Android 当返回到旧的视图寻呼机片段时,ImageButtons保持不变,android,android-viewpager,android-imagebutton,android-pageradapter,Android,Android Viewpager,Android Imagebutton,Android Pageradapter,我有一个家庭活动,我使用了ViewPager。向右滑动时会出现两个片段home1F和home2F。HomeActivity有一个顶部栏(由Linerlayout使用),其中有2个图像按钮。当home1F在屏幕上时,会显示一个按钮(另一个按钮不可见),当home2F在屏幕上时,会显示另一个按钮,而第一个按钮则不可见。 但是,当我运行应用程序时,我首先发现第二个按钮是可见的,而不是第一个按钮(当有home1F时)。当我刷到home2F时,什么也没发生。当我向左滑动回到家1F时,仍然没有发生任何事情

我有一个家庭活动,我使用了ViewPager。向右滑动时会出现两个片段home1F和home2F。HomeActivity有一个顶部栏(由Linerlayout使用),其中有2个图像按钮。当home1F在屏幕上时,会显示一个按钮(另一个按钮不可见),当home2F在屏幕上时,会显示另一个按钮,而第一个按钮则不可见。 但是,当我运行应用程序时,我首先发现第二个按钮是可见的,而不是第一个按钮(当有home1F时)。当我刷到home2F时,什么也没发生。当我向左滑动回到家1F时,仍然没有发生任何事情

代码如下:

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;
        }
}
如果要切换显示的实际片段,则需要避免使用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;
     }
   }
});
ViewPager-pager=/*获取我的ViewPager*/;
//假设这里面有东西
最终ArrayList标题=新ArrayList();
FragmentManager fm=getSupportFragmentManager();
寻呼机设置适配器(新FragmentStatePagerAdapter(fm){
public int getCount(){
返回titles.size();
}
公共片段getItem(int位置){
MyFragment fragment=新的MyFragment();
fragment.setTitle(titles.get(position));
返回片段;
}
public int getItemPosition(对象项){
MyFragment fragment=(MyFragment)项;
String title=fragment.getTitle();
int position=titles.indexOf(title);
如果(位置>=0){
返回位置;
}否则{
返回位置\无;
}
}
});
试试这个

在创建活动时显示imageButton1并隐藏imageButton2

@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) {

        }
    });

添加用于切换按钮可见性的方法。