在Android中的SherlockFragmentActivity的SherlockFragment中没有调用onResume()?

时间:2014-01-07 06:07:30

标签: android android-fragments actionbarsherlock

我正在使用Sherlock Fragment API的应用程序中工作。

我有6个 SherlockFragments 用于制作6个不同的屏幕。现在,当我的应用程序启动时,最初会立即调用所有片段的onResume。

我需要一个方法,比如我们在onResume上使用的一个方法,用于从一个Fragment移动到另一个Fragment。当我从一个片段移动到另一个片段时,我必须调用一个Web服务方法。

我尝试在这里使用 onResume ,但是当我从第1个片段移动到第2个片段时,则会调用第3个片段的onResume。当我们从一个片段移动到下一个片段时,会调用替代片段。

请建议我,当我从1个片段移动到下一个片段时,我应该使用哪种方法来调用我的Web服务。

EDITED : 我的实际要求是在我们向用户显示片段时调用一个事件。在那次活动中,我必须致电服务部门获取更新数据。

3 个答案:

答案 0 :(得分:0)

onResume方法与Activity绑定。如果您在Fragments附加到公共Activity之间来回移动,则onResume将不再被调用。但是,如果您要退回或离开此Activity然后返回,则会调用onResume

您可以考虑onAttach

答案 1 :(得分:0)

您可以使用这种方式来解决此问题。实际上我的申请也遇到了同样的问题。我在ViewPager中使用FragmentPagerAdapter显示多个选项卡。我只是隐藏并在TabSelection上显示片段,并使用notifyDataChanged()方法进行刷新适配器。

我的代码:

/** Creating an instance of FragmentPagerAdapter */
final MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(fm);

/** Setting the FragmentPagerAdapter object to the viewPager object */
_mPager.setAdapter(fragmentPagerAdapter);
_mActionBar.setDisplayShowTitleEnabled(false);

/** Defining tab listener */
ActionBar.TabListener tabListener = new ActionBar.TabListener() {

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {

            ft.hide(fragmentPagerAdapter.getItem(tab.getPosition()));
            fragmentPagerAdapter.notifyDataSetChanged();
            _mPager.setAdapter(fragmentPagerAdapter);
        }

        @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
            _mPager.setCurrentItem(tab.getPosition());

        ft.show(fragmentPagerAdapter.getItem(tab.getPosition()));
            fragmentPagerAdapter.notifyDataSetChanged();
            _mPager.setAdapter(fragmentPagerAdapter);
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
        }
};

答案 2 :(得分:0)

这对我有用。 我使用onStart()而不是onresume()中使用sherlockfragmentactivity。 我打电话给notifyondatasetchanged