我在FramentPageAdapter
时遇到了奇怪的问题MainActivity.java
@SuppressLint("ValidFragment")
public class MainActivity<DashboardActivity> extends FragmentActivity implements ActionBar.TabListener {
...
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(0)).setTabListener(this).setIcon(R.drawable.rating_good));
actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(1)).setTabListener(this).setIcon(R.drawable.action_search));
actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(2)).setTabListener(this).setIcon(R.drawable.action_search));
}
...
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
public Fragment getItem(int position) {
Fragment fragment = null;
switch(position) {
case 0:
fragment = new Fragment0();
break;
case 1:
fragment = new Fragment1();
break;
case 2:
fragment = new Fragment2();
break;
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
/*
* Title
*/
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section0).toUpperCase(l);
case 1:
return getString(R.string.title_section1).toUpperCase(l);
case 2:
return getString(R.string.title_section2).toUpperCase(l);
}
return null;
}
}
当我尝试在3个选项卡之间切换时,public Fragment getItem(int position)返回错误的位置。当我用2个标签创建应用程序时,一切正常。添加超过2个,创建奇怪的问题。 从0切换到1位置 - 工作正常,从1切换到0 - 工作正常,从1切换到2位置 - 工作正常,但是,当我尝试从2回到1位置时,public Fragment getItem(int position) - int position return&#34; 0&#34;而不是&#34; 1&#34;。 有人帮我这个吗?
答案 0 :(得分:8)
好的,我找到了解决方案。 首先,getItem“int position”不表示当前的显示片段。 要显示3个或更多选项卡,而不卸载firts片段您必须添加以下行:
mViewPager.setOffscreenPageLimit(3);
故事结束......
答案 1 :(得分:3)
你只需要:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Log.d("test", "position = " + position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
position
中的onPageSelected
是你想要的。
答案 2 :(得分:2)
我遇到了同样的问题,我在每个标签中都使用了片段; 而不是
mViewPager.setAdapter(new MainTabs(getFragmentManager()));
使用这个:
mViewPager.setAdapter(new MainTabs(getChildFragmentManager()));
答案 3 :(得分:1)
如果其他人有这个问题,我通过不使用给定的position
来解决它。取而代之的是,List
Fragment
getSupportFragmentManager
与Fragment
进行循环,并检查当前instanceof
是Fragment
我想要的 if (member_username == "//username" member_password == "//password")
{
//what should i do here?
//can i use any existing method to generate access_token?
result.isSuccess = true;
}
else
{
result.isSuccess = false;
}
。