【发布时间】:2016-07-31 07:04:48
【问题描述】:
在我的MainActivity 和ActionBar 中,我从DialogFragment 收听一个听众,并根据我所在的ActionBar 的片段,我需要做一些事情。
我正在使用以下代码获取当前片段并检查我在两个ActionBar 片段中的哪一个:
private Fragment getVisibleFragment() {
FragmentManager fragmentManager = getSupportFragmentManager();
List<Fragment> fragments = fragmentManager.getFragments();
if (fragments != null) {
for (Fragment fragment : fragments) {
if (fragment != null && fragment.isVisible())
return fragment;
}
}
return null;
}
但是fragment.isVisible() 对两个片段都返回true。为什么会这样?我还需要考虑其他标志吗?
以下是我的FragmentPagerAdapter 实现:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
Context context;
public SectionsPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
return new ReceivedListFragment();
case 1:
return new SentListFragment();
}
return null;
}
@Override
public int getCount() {
// Show 2 total pages.
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return context.getString(R.string.title_section1).toUpperCase(l);
case 1:
return context.getString(R.string.title_section2).toUpperCase(l);
}
return null;
}
}
【问题讨论】:
-
如何添加片段?你能展示你进行片段交易的部分吗?
-
@jonDoe 将其添加到代码中。
标签: android android-fragments android-actionbar android-actionbar-compat