我正在使用Sherlock Fragment API的应用程序中工作。
我有6个 SherlockFragments 用于制作6个不同的屏幕。现在,当我的应用程序启动时,最初会立即调用所有片段的onResume。
我需要一个方法,比如我们在onResume上使用的一个方法,用于从一个Fragment移动到另一个Fragment。当我从一个片段移动到另一个片段时,我必须调用一个Web服务方法。
我尝试在这里使用 onResume ,但是当我从第1个片段移动到第2个片段时,则会调用第3个片段的onResume。当我们从一个片段移动到下一个片段时,会调用替代片段。
请建议我,当我从1个片段移动到下一个片段时,我应该使用哪种方法来调用我的Web服务。
EDITED : 我的实际要求是在我们向用户显示片段时调用一个事件。在那次活动中,我必须致电服务部门获取更新数据。
答案 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
。