首页 > 解决方案 > 如何使用 viewpager 启动新 Activity 或刷新当前 Activity

问题描述

我有片段中的viewpager。我正在寻找开始一项新活动或使用其上的选项卡刷新当前活动

现在,我正在使用它来打开名为“星期日”和“星期一”的片段,但我想添加另一个选项卡,当用户选择此选项卡时,要么将当前活动刷新为首次打开应用程序时的相同状态,要么打开新活动

在此处输入图像描述

这是我的代码

public class MainActivity extends AppCompatActivity {


    //RSS link


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


        Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(myToolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);

        ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
         adapter.addFragment(new sectionB(), "SEC B");


        viewPager.setAdapter(adapter);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {

                //here yourDesiredPositionNumber is a int...like 0,1,2,3..according you

                if (tab.getPosition() == 0) {

  Intent i1 = new Intent(MainActivity.this, SagarActivity.class);
            startActivity(i1);
                    //here you can do your refresh of start new activity

                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });


    }


    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }


}

标签: javaandroidandroid-fragments

解决方案


刷新

如果要刷新整个活动,可以调用recreate()活动方法

在你的情况下,你在一个片段中,所以你需要先获得活动,这样你才能做到getActivity().recreate()

开始新活动

打开一个新的活动,你可以使用startActivity()

我是你的情况,你可以这样做

Intent intent = new Intent(getActivity(),activity_you_want_to_start.class);
startActivity(intent);

还记得一件事,总是让用户 getActivity() 不返回 null

现在在你的情况下

你需要像这样在你的 TabLayout 上设置监听器然后调用上面的方法

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs_dayscount);
    tabLayout.setupWithViewPager(viewPager);

 //setting listener on tabLAyout

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {

               //here yourDesiredPositionNumber is a int...like 0,1,2,3..according you

                if (tab.getPosition() == yourDesiredPositionNumber) {


                    //here you can do your refresh of start new activity 

                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

另一种方式是

您也可以像这样在 ViewPager 上设置监听器

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs_dayscount);
        tabLayout.setupWithViewPager(viewPager);

 viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {

            //here yourDesiredPositionNumber is a int...like 0,1,2,3..according you

                if(position==yourDesiredPositionNumber){

                //here you can do your refresh of start new activity

                }

                    super.onPageSelected(position);
            }
        });

推荐阅读