如何从Android中的活动移至特定标签

Dee*_*tan 1 android android-toolbar android-tablayout

我正在以下名为FriendListActivity的屏幕上工作:

屏幕截图 正如您在此处看到的那样,我是3个名为CHAT,GROUPS和CONTACTS的选项卡。每个选项卡都显示一些内容。例如,Groups选项卡显示了组数。单击每个Group时,将打开Group Chat屏幕.Now In Group Chat屏幕上,我有一个工具栏。请考虑以下代码:

 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) {

        }
    });
Run Code Online (Sandbox Code Playgroud)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

单击工具栏上的箭头时,我的应用程序将移动到包含三个选项卡的屏幕上。我的问题是,当我从活动移到FriendListActivity时,当前选定的选项卡始终是CHAT选项卡。当我从群聊屏幕移至FriendListActivity时,当前选择的标签应为“群组”标签。


解决了。

编辑的工作代码:当我们从活动移到特定选项卡时,我们需要使用活动中的意图传递TAb编号。使用以下代码来处理单击工具栏上的后退按钮。重写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;
}
Run Code Online (Sandbox Code Playgroud)

现在,在包含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);
         }
     }
Run Code Online (Sandbox Code Playgroud)

Var*_*mar 5

使用ViewPager对象的setCurrentItem(int position)方法移动到特定选项卡。