我想要獲得所有新的ActionBar和碎片API的句柄。 我有一個主要活動,我希望它管理兩個不同的選項卡。 我使用ActionBarSherlock來支持比ICS更早的版本。碎片onResume不被調用片段被分離後,然後重新連接
每個標籤都包含自己的Fragment
(每一個是SherlockListFragment
一個子類) 我得到它的工作基本上是不錯,但我有我敢肯定,這是一個愚蠢的問題,但我無法弄清楚然後:
第一次顯示每個片段時,一切正常,列表已填充,因此在ActionBar中的MenuItems。
但第二次您看到一個選項卡(swicth和切換回)之後,無論是列表填充還是ActionBar MenuItems。
這是我如何切換標籤:
@Override
public void onTabSelected(Tab tab, FragmentTransaction transaction) {
SherlockListFragment toAttach = // Find the right fragment here...
if (toAttach != null) {
if (toAttach.isAdded() == false) {
transaction.add(R.id.tab_placeholder, toAttach,
REMINDER_FRAGMENT_TAG);
} else {
transaction.attach(toAttach);
}
}
}
而且onTabUneselect我卸下片段:
@Override
public void onTabUnselected(Tab tab, FragmentTransaction transaction) {
SherlockListFragment toDetach = // Find the right fragment
if (toDetach != null) {
transaction.detach(toDetach);
}
}
我填充列表和動作條菜單中的onResume:
@Override
public void onResume() {
super.onResume();
setHasOptionsMenu(true);
fillRemindersList();
}
我也嘗試過處理通信和onCreateView但它並沒有幫助...
那麼我在這裏錯過了什麼? 如果我沒有意識到我的代碼中存在其他問題,請告訴我。
謝謝!
編輯:
我只是證實了onResume
這麼想的被調用後,我切換標籤,這是錯誤的definetly因爲我分離和重新連接他們... 我是否切換標籤的錯誤的方法?
謝謝,我希望這是答案,但它不再相關,因爲我切換到列表導航。 (在我的情況下更有意義,並且完美地工作:)) – 2012-05-06 20:26:45
在我調用'FragmentTransaction.commit()'之前調用片段#1中的'FragmentTranaction.remove(fragment#1)'幫助我強制片段#1通過onPause()... onDestroyView()替換並通過onCreateView()... onResume()時返回到片段#1按下後退按鈕。 – 2013-03-04 09:44:54