如何加载的OnCreate片段活动()只有当标签被选中的动作条所选标签的方法是什么? [英] How to load the fragment activity oncreate() method of the actionbar selected tab only if the tab is selected?
问题描述
我使用viewpager和动作条片(4片)。当主活动开始时,它加载4个片段的数据。
I am using viewpager and actionbar tabs (4 tabs). When the Main activity starts, it loads the 4 fragments data.
如何使它只加载所选标签的数据吗?
how to make it load only the selected tab data?
此外,当我选择标签1,TAB1和TAB0负载。
Also when I select tab 1, tab1 and tab0 loads.
如果我TAB0和TAB1之间滑动,的OnStart()不叫两个标签。
If I swipe between tab0 and tab1 , onstart() for both tabs not called.
如果我的TAB0负载选择TAB2,然后选择TAB0,OnStart中()。
If I select tab2 and then select tab0, onstart() for tab0 loads.
如果我TAB2 TAB3和轻扫之间,的OnStart()不叫两个标签。
If I swipe between tab2 and tab3 , onstart() for both tabs not called.
MainActivity.java
MainActivity.java
MainPagerAdapter tabsPagerAdapter;
ViewPager viewPager;
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
tabsPagerAdapter = new MainPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(tabsPagerAdapter);
actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setIcon(getResources().getDrawable(R.drawable.doros)).setTabListener(this));
actionBar.addTab(actionBar.newTab().setIcon(getResources().getDrawable(R.drawable.esteshara)).setTabListener(this));
actionBar.addTab(actionBar.newTab().setIcon(getResources().getDrawable(R.drawable.aswak)).setTabListener(this));
actionBar.addTab(actionBar.newTab().setIcon(getResources().getDrawable(R.drawable.akhbar)).setTabListener(this));
viewPager.setOffscreenPageLimit(0);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.abs_layout);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewPager.setCurrentItem(3);
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
MainPageAdapter.java
MainPageAdapter.java
public class MainPagerAdapter extends FragmentPagerAdapter implements PagerSlidingTabStrip.IconTabProvider{
public MainPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 4;
}
private int[] tabIcons = {
R.drawable.ar,
R.drawable.ar,
R.drawable.ar,
R.drawable.ar
};
@Override
public android.support.v4.app.Fragment getItem(int position) {
switch (position)
{
case 3: return new NewsFragment();
case 1: return new ConsultationFragment();
case 2: return new IndecesFragment();
case 0: return new LessonsFragment();
default: return null;
}
}
@Override
public int getPageIconResId(int i) {
return tabIcons[i];
}
}
我发现这个链接,但它没有帮助<一个href=\"http://stackoverflow.com/questions/20944138/start-fragment-only-when-tab-is-selected\">link
I found this link, but its not helpful link
推荐答案
我已经解决了这个问题。
I have solved the problem.
我创建了一个静态变量来存储选定的选项卡索引。
I have created a static variable to store selected tab index.
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
sharedVariables.setSelectedTab(tab.getPosition());
由于Viewpager如果它们存在的每次页面发生变化时,让我重写此功能检查,如果这个片段是一个用户可见,然后调用onresume方法加载所选页和左页和右页。
Since Viewpager loads the selected page and the left page and the right page if they exist every time the page changed, so I override this function to check if this fragment is the one visible to user and then call onresume method.
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
onResume();
} else {
// Do your Work
}
}
这篇关于如何加载的OnCreate片段活动()只有当标签被选中的动作条所选标签的方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!