我在我的项目中使用PagerslidingTabStrip
并以片段形式显示数据。这是一个很棒的图书馆,工作很棒。每个片段都由一个学者的讲座组成,这些讲座是从web服务加载的。访问web服务的代码位于片段的oncreateview
方法中。目前,所有片段的数据在添加到viewpager
时同时加载。我想知道是否只有当用户单击/滑动到特定的选项卡时才能加载片段的数据。不是一次什么都做。
当前的代码是相当标准的,我从提供的示例[android解决方案]中获得了帮助。1
public class ScholarDetailPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = { "Scholar Info", "Lectures"};
Scholar _scholar;
public ScholarDetailPagerAdapter(FragmentManager fm, Scholar scholar) {
super(fm);
_scholar = scholar;
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public Fragment getItem(int arg0) {
if(arg0 == 0)
return ScholarsInfoFragment.netInstance(_scholar.Name, _scholar.Information, _scholar.ThumbnailUrl);
else
return ScholarLecturesFragment.newInstance(_scholar.ScholarId);
}
@Override
public int getCount() {
return TITLES.length;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set the Above View
setContentView(R.layout.tabbed_view);
Scholar scholar = getScholar(getIntent());
_tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
_pager = (ViewPager) findViewById(R.id.pager);
_adapter = new ScholarDetailPagerAdapter(getSupportFragmentManager(), scholar);
_pager.setAdapter(_adapter);
final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
_pager.setPageMargin(pageMargin);
_tabs.setViewPager(_pager);
}
为了确保Fragment在其相应的选项卡被单击并可见时加载数据,我还尝试重写了以下事件,并在其中写入了数据加载调用:
>
onresume()
无效。在活动中添加数据时仍加载数据
尝试重写onHiddenChanged
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if(!hidden){
loadLectures();
}
您可以重写片段的SetUserVisibleHint
事件,以了解它是否对用户可见,然后加载数据。类似以下内容:
boolean _areLecturesLoaded = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && !_areLecturesLoaded ) {
loadLectures();
_areLecturesLoaded = true;
}
}
我已经在我的片段中重写了以下方法:setUserVisibleHint 在fragment类中,变量设置为:private var isLoadOnce=false。 我有3个片段,问题是当我的活动popsup时,第一个片段是可见的,如果我单击最后一个选项卡,也就是第三个选项卡加载第三个片段,什么也不会发生,即web服务根本不会调用。
问题内容: 我有包含大量数据的大型表格,所以我希望每个标签都带有大量数据的标签。 我希望在单击标签标题时可以延迟加载标签内容,然后在以后再次选择时不需要再次重新加载。 我认为这个示例符合我想要的方向: [ngular-ui选项卡在tab-content中加载模板 但这似乎加载了一个静态模板: 如何使用$ http.get()动态加载窗格的内容?注意:这已经是通过ng-view路由加载的页面,因此我
公共类PageSlidingTabStripFragment扩展Fragment{ }
} 我使用android ViewPager,当我点击不同的标签时,使用不同的片段来加载。但问题是,当我单击选项卡时,片段没有加载。当活动加载时,所有的片段都被加载,那么片段就不会改变。我如何解决这个问题?我需要加载片断时,我选择选项卡在查看页。
问题内容: 我在内使用3 ,问题是我在和加载器中加载大数据。在这类设备上,它可以正常工作,但是在低端设备上,则需要很多时间。这主要是因为当我实现时,我将Fragments放在an中,这迫使片段在加载主活动时实例化。我需要的是它只是“加载”第一个片段(主要),而当用户使用时,加载另一个片段。它有什么办法做到这一点?这是我的页面 问题答案: Sun的上述方法对我不起作用(也许对您有用),但是我想我也将
我已经创建了一个应用程序的布局有三个标签在Android2.3。每个选项卡都有一个片段,在每个片段中,都有一个列表视图。在列表视图中显示的所有数据都来自互联网,数据总是在变化,所以每次我看那个片段的时候都想重新加载数据。例如,我现在正在观看“tab1”,当我单击“tab2”时,“tab2”中的数据将重新加载,而当我单击返回“tab1”时,“tab1”中的数据也将再次重新加载。我试过了 TabSAd