Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 片段onResume不';在片段被分离然后重新连接之后,不会被调用_Java_Android_Android Fragments_Actionbarsherlock_Android Actionbar - Fatal编程技术网

Java 片段onResume不';在片段被分离然后重新连接之后,不会被调用

Java 片段onResume不';在片段被分离然后重新连接之后,不会被调用,java,android,android-fragments,actionbarsherlock,android-actionbar,Java,Android,Android Fragments,Actionbarsherlock,Android Actionbar,我正在尝试处理所有新的ActionBar和Fragments API。 我有一个主活动,我希望它管理两个不同的选项卡。 我使用ActionBarSherlock是为了支持比ICS更旧的版本 每个选项卡都包含自己的片段(每个选项卡都是SherlockListFragment的子类) 我让它基本上工作得很好,但我有一个问题,我肯定这是愚蠢的,但我还不能弄清楚: 在第一次显示每个片段时,一切正常,列表已填充,因此ActionBar中的菜单项 但是当你第二次看到一个标签时(在切换并返回后),列表和Act

我正在尝试处理所有新的ActionBar和Fragments API。 我有一个主活动,我希望它管理两个不同的选项卡。 我使用ActionBarSherlock是为了支持比ICS更旧的版本

每个选项卡都包含自己的
片段
(每个选项卡都是
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时,按后退按钮。