【发布时间】:2016-07-03 12:08:48
【问题描述】:
我发现很难解决这个问题。
我的应用有一个 MainActivity,其中我有一个包含 TabLayout 的 TabFragment。 我只想在用户单击第二个选项卡时在 MainActivity 的工具栏中显示一个副标题,并在我单击它时隐藏它。
我已经设法通过侧面 NavigationDrawer 获得它(我也可以从那里选择一个选项卡,一切正常)。 尽管如此,我还是不明白如何在选项卡(位于片段中)上设置 setOnClickListener,然后仅当我在第二个选项卡中时才要求容器 Activity 显示字幕。
我的 MainActivity 中有这两种方法,用于显示/隐藏字幕。
// Update the petrol stations' total count.
public void updatePetrolStationsCount(Toolbar toolbar) {
PetrolLab petrolLab = PetrolLab.get(getApplicationContext());
int petrolStationsSize = petrolLab.getPetrolStations().size();
String totalCount = getResources().getQuantityString(R.plurals.total_count_format, petrolStationsSize, petrolStationsSize);
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setSubtitle(totalCount);
}
// Hide the petrol stations' total count.
public void hidePetrolStationsCount(Toolbar toolbar) {
String totalCount = null;
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setSubtitle(totalCount);
}
在我的 TabFragment 内部,我正在使用 TabPager 的内部类。
class TabPagerAdapter extends FragmentPagerAdapter {
public TabPagerAdapter(FragmentManager fm) {
super(fm);
}
// Return fragment with respect to position.
@Override
public Fragment getItem(int position) {
Fragment fragment;
switch (position) {
case MAP_POSITION:
fragment = MapFragment.newInstance(MAP_TYPE);
return fragment;
case PETROL_POSITION:
fragment = PetrolStationListFragment.newInstance(position);
return fragment;
case FAV_POSITION:
return new FavouritesFragment();
}
return null;
}
@Override
public int getCount() {
return intItems;
}
}
关于如何告诉 MainActivity 用户已选择 TabFragment 中的第二个选项卡的任何提示?就像在每个选项卡上放置一个 Listener。 谢谢。
【问题讨论】:
标签: android android-fragments android-viewpager android-toolbar android-tablayout