Java 片段onResume不';在片段被分离然后重新连接之后,不会被调用
我正在尝试处理所有新的ActionBar和Fragments API。 我有一个主活动,我希望它管理两个不同的选项卡。 我使用ActionBarSherlock是为了支持比ICS更旧的版本 每个选项卡都包含自己的Java 片段onResume不';在片段被分离然后重新连接之后,不会被调用,java,android,android-fragments,actionbarsherlock,android-actionbar,Java,Android,Android Fragments,Actionbarsherlock,Android Actionbar,我正在尝试处理所有新的ActionBar和Fragments API。 我有一个主活动,我希望它管理两个不同的选项卡。 我使用ActionBarSherlock是为了支持比ICS更旧的版本 每个选项卡都包含自己的片段(每个选项卡都是SherlockListFragment的子类) 我让它基本上工作得很好,但我有一个问题,我肯定这是愚蠢的,但我还不能弄清楚: 在第一次显示每个片段时,一切正常,列表已填充,因此ActionBar中的菜单项 但是当你第二次看到一个标签时(在切换并返回后),列表和Act
片段
(每个选项卡都是SherlockListFragment
的子类)
我让它基本上工作得很好,但我有一个问题,我肯定这是愚蠢的,但我还不能弄清楚:
在第一次显示每个片段时,一切正常,列表已填充,因此ActionBar中的菜单项
但是当你第二次看到一个标签时(在切换并返回后),列表和ActionBar菜单都不会被填充
以下是我切换选项卡的方式:
@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);
}
}
}
我正在分离碎片:
@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();
}
我也在onStart和onCreateView中尝试过,但没有任何帮助
那么我在这里错过了什么?
如果我的代码中还有其他我不知道的问题,请告诉我
谢谢
编辑:
我刚刚确认,在切换选项卡后,onResume
不会被调用,这显然是错误的,因为我正在分离并重新连接选项卡。。。
我切换制表符的方式是否错误?在我假定的代码之外执行beginTransaction()和commit(),还是您忘记了?
您也可以从示例中看到此处使用的技巧:
尝试使用transaction.remove(fragment)in ontabonselected和transaction.replace in onTabSelected。两者都不是!如您所见,我正在实现ActionBar.TabListener接口。在TabListener回调中,您得到了一个准备好使用的片段事务(即“beginned”),您不能像文档中明确说明的那样调用commit。此外,片段正在交换,所以这不是…谢谢,我希望这是答案,尽管它不再相关,因为我切换到列表导航。(在我的例子中更有意义,而且效果很好:))在我的例子中,在调用“FragmentTransaction.commit()”之前,在片段1中调用“FragmentTransaction.remove(片段#1)”,可以帮助我强制片段#1通过onPause()。。。OnTestRoyView()关于替换的说明,并查看onCreateView()。。。onResume()当我返回片段#1时,按后退按钮。