有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用viewpager启动新活动或刷新当前活动

我有一个片段的viewpager。我想开始一个新的活动,或者用它上面的标签刷新当前的活动

现在,我用这个打开名为“Sunday”和“Monday”的片段,但我想添加另一个选项卡,当用户选择这个选项卡时,要么将当前活动刷新为应用程序首次打开时的状态,要么打开新活动

enter image description here

这是我的密码

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); } } }

共 (1) 个答案

  1. # 1 楼答案

    刷新

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

    在你的例子中,你处于一个片段中,所以你需要先获得活动,这样你就可以像getActivity().recreate()

    开始新的活动

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

    我相信你的案子你可以这样做

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

    Remember one more thing, always make user getActivity() not returning 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上设置Listener

    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);
                }
            });