在我的 Android 应用程序中,我使用带有选项卡的操作栏在显示选项卡内容的片段之间切换。一切正常,直到方向改变:然后 Android 开始将小部件绘制在彼此之上,以便片段的内容混合在一起。我的TabListener
:
private class TabListener implements ActionBar.TabListener {
private final Activity mActivity;
private final String mTag;
public TabListener(Activity activity, String tag) {
mActivity = activity;
mTag = tag;
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
Fragment mFragment = MyActivity.this.getSupportFragmentManager().findFragmentByTag(mTag);
if (mFragment == null) {
mFragment = new MyFragment();
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
Fragment mFragment = MyActivity.this.getSupportFragmentManager().findFragmentByTag(mTag);
if (mFragment != null) {
ft.detach(mFragment);
}
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
// Do nothing
}
}
我唯一注意到的是,在每次方向更改时,onTabUnselected()
都不会被调用,但仍会onTabSelected()
被调用(因此当前选项卡将被附加两次,而不会在两者之间分离)。如果这是问题所在,我不知道如何解决。如果这不是问题,我不知道在哪里看。如果有人有建议,我会很高兴。
旁注:我正在使用 ActionBarSherlock 的操作栏。这个问题出现在我测试过的所有 Android 版本(2.3、4.0、4.1)上。