android - 选项卡 fragment - 选项卡随 fragment 侧面的按钮操作而变化

标签 android android-fragments tabs android-viewpager viewpagerindicator

我正在使用 TabsPagerAdapter 开发 ViewPager,我已经成功创建了两个选项卡,例如 a 和 b。我的按钮被放置在选项卡中,如果我单击按钮,它必须放置在选项卡中。

主要 Activity 是 -

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Top Rated", "Games" };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Initilization
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        

    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    /**
     * on swiping the viewpager make respective tab selected
     * */
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            // on changing the page
            // make respected tab selected
            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    // on tab selected
    // show respected fragment view
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}}

Tabpageadaper 是 -

public class TabsPagerAdapter extends FragmentPagerAdapter {

public TabsPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int index) {

    switch (index) {
    case 0:
        // Top Rated fragment activity
        return new TopRatedFragment();
    case 1:
        // Games fragment activity
        return new GamesFragment();
    case 2:
        // Movies fragment activity
        return new MoviesFragment();
    }

    return null;
}

@Override
public int getCount() {
    // get item count - equal to number of tabs
    return 3;
}

}

我的按钮位于“最高评价”选项卡中,如下所示 -

public class TopRatedFragment extends Fragment {
private int currentPage;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);
    Button b1=(Button)rootView.findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        }
    });
    return rootView;
}

}

当我单击上面的按钮时,它必须打开游戏选项卡。提前致谢。

最佳答案

要更改Tab/Fragment,您可以使用viewPager.setCurrentItem()方法。

  1. MainActivity.java 中编写一个 public 方法,如下所示:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        ................
        ........................
    }
    
    public void selectTab(int position) {
        viewPager.setCurrentItem(position);
    }
    
  2. 使用 TopRatedFragment.java 中的 selectTab() 方法选择 GamesFragment

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    
        View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);
        Button b1=(Button)rootView.findViewById(R.id.button);
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ((MainActivity)getActivity()).selectTab(1); // 1 for GamesFragment
            }
        });
    
        return rootView;
    }
    

关于android - 选项卡 fragment - 选项卡随 fragment 侧面的按钮操作而变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43366697/

相关文章:

android - 如何以编程方式创建自定义 View 的布局?

android - Ice Cream Sandwich 4.0.3 是否对应用程序开发人员在线程使用方面实现了更多限制?

java - 谷歌地图 - 我正在尝试更新当前位置,但我的应用程序一打开就关闭了。这是代码-

java - 如何为 fragment 设置列表适配器

html - 如何仅在 kindle fire 设备中为肖像编码样式?

android - fragment 未附加到相应的 fragment

android - 是否可以将持久 Bottom Sheet 作为 fragment ?

android - 用 fragment 替换 ViewPager - 然后导航回来

css - 随机显示 4Tab of 12Tab 并隐藏另一个标签

jQuery 从 URL 设置事件选项卡