Я работаю над следующим экраном с именем FriendListActivity:
Как вы можете видеть здесь, у меня есть 3 вкладки с именами ЧАТ, ГРУППЫ и КОНТАКТЫ. На каждой вкладке отображается какое-то содержимое. Например, вкладка "Группы" отображает количество групп. При нажатии на каждую группу, группа Открывается экран чата. Теперь на экране группового чата у меня есть панель инструментов. Рассмотрим следующий код:
Toolbar toolbarGroupChat = (Toolbar) findViewById(R.id.toolbarGroupChat);
setSupportActionBar(toolbarGroupChat);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(upperCase(group_name));
//ViewPager
viewPager = (ViewPager) findViewById(R.id.viewPager);
//Initializing PagerAdapter
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
PagerAdapter.java
public class PagerAdapter extends FragmentStatePagerAdapter {
private int noOfTabs;
public PagerAdapter(FragmentManager fm, int noOfTabs) {
super(fm);
this.noOfTabs = noOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
ChatFragment chatFragment = new ChatFragment();
return chatFragment;
case 1:
GroupsFragment groupsFragment = new GroupsFragment();
return groupsFragment;
case 2:
ContactsFragment contactsFragment = new ContactsFragment();
return contactsFragment;
default:
return null;
}
}
@Override
public int getCount() {
return noOfTabs;
}
}
При нажатии стрелки на панели инструментов мое приложение перемещается на экран, содержащий три вкладки. Моя проблема заключается в том, что текущая выбранная вкладка всегда является вкладкой ЧАТ, когда я перехожу от активности к FriendListActivity. Когда я перехожу с экрана группового чата на FriendListActivity , текущая выбранная вкладка должна быть вкладкой ГРУППЫ.
Решено.
Отредактированный рабочий код: когда мы переходим от Activity к определенной вкладке, нам нужно передать номер TAb, используя намерения из Activity. Используйте следующий код для обработки щелчка по кнопке возврата на панели инструментов. Отмените метод getSupportParentActivityIntent () :
public Intent getSupportParentActivityIntent() {
final Bundle bundle = new Bundle();
final Intent intent = new Intent(this, FriendsListActivity.class);
bundle.putString("TabNumber", tab_number);
intent.putExtras(bundle);
return intent;
}
Теперь внутри действия, содержащего 3 вкладки, используйте следующий код:
final Intent intent = getIntent();
if (intent.hasExtra("TabNumber")) {
String tab = intent.getExtras().getString("TabNumber");
Log.e("TabNumberFriendList",tab);
switchToTab(tab);
}
public void switchToTab(String tab){
if(tab.equals("0")){
viewPager.setCurrentItem(0);
}else if(tab.equals("1")){
viewPager.setCurrentItem(1);
}else if(tab.equals("2")){
viewPager.setCurrentItem(2);
}
}