У меня есть 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);
}
}
}



Для обновления
Если вы хотите обновить всю активность, вы можете вызвать метод активности 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) {
}
});
Еще один способ
Вы также можете установить Listener на 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);
}
});
на вкладке Layout вы можете установить слушателя .. вы знаете, как это сделать, или вам тоже нужна помощь? я могу переписать свой ответ, но скажите, знаете вы или нет .. я отвечу соответственно @BirNepali
да, я использую ... Я успешно использую код из одного из руководств, и он работал довольно хорошо ... но теперь мне нужно добавить еще одну или две вкладки, чтобы обновить или открыть новое действие после тех двух вкладок, которые открывают фрагмент.
Я обновил свой код, о котором идет речь ... теперь даже ранее видимые две вкладки также исчезли, и нет никаких вкладок ... а теперь как сделать вкладку видимой сейчас?
Ваш вопрос не имеет отношения к тому, что вы хотите .. Вы спрашивали об обновлении и запуске активности, вот что делает этот фрагмент .. Вы не реализуете вещи правильно @BirNepali
Хорошо, здесь я реализовал коды, например, adapter.addFragment (новый sectionA (), «Section A»); который открывает фрагмент с именем sectionA, но я хотел бы открыть новое действие вместо фрагмента при нажатии вкладки. Так ты можешь мне с этим помочь?
Но где мне написать этот код, так как на данный момент у меня есть две кнопки табуляции с этим кодом adapter.addFragment (new Sunday (), "Sunday") .. где я должен добавить этот код, чтобы при нажатии любого из них сначала говорилось вкладка откроет новую активность?