在我的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的Action Bar。問題出現在我用(2.3,4.0,4.1)測試的所有Android版本上。
謝謝您的意見,非常有幫助。在測試過程中,我發現如果在方向更改之後選擇了與方向更改之前相同的選項卡/片段,則問題不會發生。所以我可以通過簡單地確保選定的選項卡/片段在方向更改期間不會更改來解決我的問題。 – aha
@aha歡迎您..... :) – MGDroid