我正在尝试掌握所有新的ActionBar和Fragments API。我有一个主Activity,想要管理两个不同的选项卡。为了支持比ICS更早的版本,我使用ActionBarSherlock。每个选项卡包含自己的Fragment(每个Fragment都是SherlockListFragment的子类)。
可以基本正常工作,但我有一个问题,我相信这很愚蠢,但我还没有找到解决方法。第一次显示每个Fragment时,一切正常,列表被填充,ActionBar中的MenuItems也是如此。但第二次查看选项卡时(在切换和切换回之后),列表和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);
}
}
}
在 onTabUnselect 事件中,我正在分离 Fragment:
@Override
public void onTabUnselected(Tab tab, FragmentTransaction transaction) {
SherlockListFragment toDetach = // Find the right fragment
if (toDetach != null) {
transaction.detach(toDetach);
}
}
我正在onResume中填充列表和ActionBar菜单:
@Override
public void onResume() {
super.onResume();
setHasOptionsMenu(true);
fillRemindersList();
}
我也尝试了在onStart和onCreateView中,但这并没有帮助...
那么我错过了什么? 如果我的代码还有其他问题,而我不知道,请告诉我。
谢谢!
编辑:
我刚刚确认,在我切换选项卡后, onResume
没有被调用,这绝对是错误的,因为我正在分离和重新连接它们... 我切换选项卡的方式不对吗?