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)
| 归档时间: |
|
| 查看次数: |
5711 次 |
| 最近记录: |