我尝试启动一个简单的标签滑动,但是当我添加PagerAdapter时,从不调用getItem方法。 我找不到原因。
活动:
public class ProfileActivity extends Activity implements ActionBar.TabListener
{
ViewPager viewPager;
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_acivity);
viewPager = (ViewPager) findViewById(R.id.profile_view_pager);
ProfilePagerAdapter viewPagerAdapter = new ProfilePagerAdapter(getFragmentManager());
viewPager.setAdapter(viewPagerAdapter);
viewPager.setCurrentItem(0);
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab friendsTab = actionBar.newTab();
ActionBar.Tab postsTab = actionBar.newTab();
ActionBar.Tab tribesTab = actionBar.newTab();
tribesTab.setText("TRIBES");
postsTab.setText("POSTS");
friendsTab.setText("FRIENDS");
tribesTab.setTabListener(this);
postsTab.setTabListener(this);
friendsTab.setTabListener(this);
actionBar.addTab(friendsTab);
actionBar.addTab(postsTab);
actionBar.addTab(tribesTab);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_profile_acivity, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
}
}
(我也试过FragmentActivity虽然我不需要V4而且我使用的是V13)
我的适配器:
private class ProfilePagerAdapter extends FragmentPagerAdapter
{
Fragment fragment = new ProfileTribeFragment();
public ProfilePagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int i)
{
Log.i("D","NO :{");
if(i==0)
{
fragment = new ProfileFriendsFragment();
}
if(i==1)
{
fragment = new ProfilePostsFragment();
}
if(i==2)
{
fragment = new ProfileTribeFragment();
}
return fragment;
}
@Override
public int getCount()
{
return 0;
}
}
所有3个碎片看起来都是这样的:
public class ProfileTribeFragment extends Fragment {
public ProfileTribeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_profile_tribe, container, false);
}
}
我无法想象我做错了什么。 从未见过getItem上的Log.i。
答案 0 :(得分:3)
你在getCount()
上返回零,所以你的PagerAdapter中没有任何物品:
@Override
public int getCount()
{
return 0;
}
答案 1 :(得分:2)
页面适配器不会将页面绑定为 getCount()中定义的页面计数,但在您的情况下,您返回静态'0'零计数,因此寻呼机适配器不会绑定那边的任何页面,你都无法看到任何页面数据。您需要在 getCount()方法中设置无页面计数,例如3,如下所示:
@Override
public int getCount(){
return 3; // 3 is no of page count
}
答案 2 :(得分:0)
以getCount()
方法返回片段数:
int fragmentCount=3;
@Override
public int getCount()
{
return fragmentCount;
}
答案 3 :(得分:0)
对我来说什么都不起作用,然后我找到了解决方案-使用FragmentStatePagerAdapter代替FragmentPagerAdapter。