2014-11-10 4 views
-1

간단한 탭 스 와이프를 초기화하려고하는데, PagerAdapter를 추가 할 때 getItem 메소드가 호출되지 않습니다. 이 이유는 찾을 수 없습니다.FragmentPagerAdapter 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) 
{ 

} 
} 

(나는 또한 내가 V4 필요하지 않습니다와 나는 V13을 사용하고 FragmentActivity 비록 함께 시도)

내 어댑터 :

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 개의 조각은 다음과 같이 보입니다.

}

나는 잘못 생각하고있다. getItem의 Log.i가 절대로 표시되지 않습니다.

답변

2

당신은 그래서 당신의 PagerAdapter 내부에 항목이 없을 것이다 getCount()에 0을 반환 : getCount() 안에 그러나 귀하의 경우 페이지 수를 정의하면 수익이

@Override 
public int getCount() 
{ 
    return 0; 
} 
+0

오 와우 그 날의 바보! 감사! – Eladit

+0

실수가 발생했습니다.) –

2

페이지 어댑터가 어떤 페이지를 바인딩하지 않습니다 static '0'zero 카운트이므로 페이저 어댑터는 거기의 페이지를 바인딩하지 않으므로 페이지 데이터를 볼 수 없습니다. 당신은 getCount() 예를 들어 아래와 같이 3과 같은 방법 내부에는 페이지 수를 설정하지해야합니다

@Override 
public int getCount(){ 
    return 3; // 3 is no of page count 
} 
+1

영어 번역을 위해 누군가가 필요합니다. –

+1

@ NeonWarge, 수정 해 주셔서 감사합니다. 현재 업데이트 된 ans를 확인하십시오. –

0

돌아 getCount() 방법에서 조각의 수 :

int fragmentCount=3; 

@Override 
public int getCount() 
{ 
    return fragmentCount; 
} 
관련 문제