Как начать новую активность или обновить текущую активность с помощью viewpager - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть viewpager, который находится в фрагменте.Я ищу, чтобы начать новое действие или обновить текущее действие, используя вкладки на нем

. Сейчас я использую это для открытия фрагмента под названием «Воскресенье» и «Понедельник», но я хотел бы добавить еще одну вкладку.и когда пользователь выбирает эту вкладку, либо обновляет текущее действие в том же состоянии, когда приложение впервые открывается, либо открывает новое действие

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 Ответ

0 голосов
/ 20 сентября 2018

Для обновления

Если вы хотите обновить всю деятельность, вы можете вызвать recreate() метод деятельности

, в вашем случае вы находитесь во фрагменте, поэтому вам нужночтобы сначала получить действие, чтобы вы могли делать, как getActivity().recreate()

Для начала нового действия

для открытия нового действия вы можете использовать startActivity()

В вашем случае вы можете сделать вот так

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

Запомните еще одну вещь, всегда заставляйте пользователя getActivity () не возвращать ноль

Теперь в вашемcase

вам нужно настроить слушатель на свой 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) {

            }
        });

One Another Way -

Youможно также настроить прослушиватель на 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);
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...