如何从android

时间:2016-04-13 06:03:07

标签: android android-toolbar android-tablayout

我正在开发名为FriendListActivity的以下屏幕:

Screenshot 正如你在这里看到的,我是3个标签,名为CHAT,GROUPS和CONTACTS。每个标签显示一些内容。例如,组标签显示组数。点击每个组,组聊天屏幕打开。现在在群聊中屏幕,我有一个工具栏。考虑以下代码:

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

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

解决。

编辑工作代码: 当我们从一个Activity移动到一个特定的选项卡时,我们需要使用Activity中的Intent传递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;
}

现在在包含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);
         }
     }

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

你可能已经创建了一个tabHost,所以当它完成后,你应该使用 -

tabHost.setCurrentTab(1);

,只要您想设置另一个标签,就可以使用具有不同参数的相同代码。

Ref

答案 2 :(得分:0)

从截图中你必须使用Tablayout,所以你可以在那里使用这两个构建函数。

userService

将此选项卡保存在某个变量中,然后onCreate在此函数中设置该整数值..

tabLayout.getSelectedTabPosition();

希望这会有所帮助.. :)

答案 3 :(得分:0)

你也可以使用这段代码:

在群聊活动中添加public static TabToOpen = 1(例如group_chat_activity)。

然后在setCurrentTab(group_chat_activity.TabToOpen)活动中使用onResume(),其中您的ViewPager对象将移动到特定标签。当您需要一个按钮来访问滑动活动中的特定选项卡时,这非常有用。