【发布时间】:2016-08-04 01:04:49
【问题描述】:
我正在使用名为 FriendListActivity 的以下屏幕:
正如您在此处看到的,我是 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 时。当我从群聊移动Screen to FriendListActivity,当前选中的tab应该是GROUPS Tab。
解决了。
编辑的工作代码: 当我们从 Activity 移动到特定的选项卡时,我们需要使用 Activity 的意图传递 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);
}
}
【问题讨论】:
标签: android android-toolbar android-tablayout