首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当返回到旧的视图寻呼机片段时,ImageButtons保持不变

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

Stack Overflow用户
提问于 2018-09-25 09:45:07
回答 2查看 38关注 0票数 0

我有一个HomeActivity,在这里我使用了ViewPager。有两个片段,home1F和home2F来时,滑动的权利。HomeActivity有一个顶部条(由Linerlayout使用),其中有2个图像按钮。当home1F在屏幕上时,会显示一个按钮(另一个是不可见的),而当home2F在屏幕上时,显示另一个按钮,而第一个按钮变得不可见。但是当我运行这个应用程序时,我首先发现第二个按钮是可见的,而不是第一个按钮(当有home1F时)。当我向home2F滑动时,什么都不会发生。当我离开去回到home1F的时候,仍然什么也没有发生。

以下是代码:

代码语言:javascript
复制
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;
        }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-25 11:18:38

尝尝这个

显示imageButton1并将imageButton2隐藏在Activity的onCreate中

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scrolling);
    imag1.setVisibility(View.VISIBLE);
    imag2.setVisibility(View.GONE);

因此,当应用程序启动时,它将显示第一个imageButton并隐藏第二个imageButton。

现在,当您在选项卡之间切换时

代码语言:javascript
复制
  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) {

        }
    });
票数 1
EN

Stack Overflow用户

发布于 2018-09-25 10:42:22

如果要切换正在显示的实际片段,则需要避免使用FragmentPagerAdapter并使用FragmentStatePagerAdapter.

使用getItemPosition(),我们可以更新片段。在下面的示例中,有更新的片段标题:

代码语言:javascript
复制
 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;
     }
   }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52495166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档