0

여러 조각을 표시하려면 FragmentActivity 및 ViewPager를 사용하고 있습니다. FragmentActivity에 전달 된 의도에 따라 매번 다른 단편을 표시하고 싶습니다. 그러나 문제는 setAdapter() 이후에 setCurrentItem()을 사용하면 첫 번째 단편이됩니다. 항상 생성, 어떻게 이것을 피할 수 있습니까?setCurrentItem 전에 첫 번째 조각을 만드는 것을 피하는 방법?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.container_page); 

    mDemoCollectionPagerAdapter = new FragmentPageAdapter(
      getSupportFragmentManager()); 

    mViewPager = (ViewPager)findViewById(R.id.pager); 

    mViewPager.setAdapter(mDemoCollectionPagerAdapter); 

    Intent intent = getIntent(); 
    int whichFragment = intent.getIntExtra(Constants.EXTRA_WHICH_FRAGMENT, 0); 

    mViewPager.setCurrentItem(whichFragment, false); 
    setActionBarTitle(whichFragment); 

    mViewPager.setOnPageChangeListener(this); 
} 

답변

0

당신은 adapter..and에서 조각을 앞의 제거 이후에 ​​추가 할 수 있습니다 ..

이 다른 fragments..Otherwise을 추가 한 후 notifyDataSetChanged()를 호출하는 것을 잊지 마세요 당신이

또한 당신이 예외를 얻을 것이다 모든 조각에 대해 증가 된 위치를 반환하려면 어댑터의 getItemPosition() 메서드를 재정의해야 할 수 있습니다.

0

앱이 추가 정보를 검색하는 데 약간의 시간이 소요될 수 있으므로 첫 번째 조각을 부 풀릴 수 있습니다.

봅니다는, setAdapter()하기 전에이를 넣어 :

Intent intent = getIntent(); 
int whichFragment = intent.getIntExtra(Constants.EXTRA_WHICH_FRAGMENT, 0); 

그런 다음 바로는, setAdapter 후, 현재 항목을 설정합니다.

+0

시도했지만 작동하지 않았다. – Paparika

+0

미안하지만 내가 이해한다면, 첫 번째 조각 대신에 의도 된 조각이 먼저 만들어지기를 원한다. 이것은 성능상의 이유로 가정합니다. adapter.setPrimaryItem (컨테이너, 위치, 객체)을 시도 했습니까? –

+0

다른 Activity에 3 개의 버튼이 있는데, 그 중 하나를 누르면 FragmentActivity가 만들어져 다른 조각이 표시됩니다. 예, 성능상의 문제가 있습니다. 첫 번째 조각에는 많은 작업이 필요하므로 두 번째 조각이 요청되면 많은 작업이 필요합니다. 첫 번째 단편을 준비하는 데 시간을 소비하고 있습니다.하지만 시스템이 다른 단편을 미리로드하여 (단편 사이를 스 와이프 할 때) 더 나은 사용자 경험을 제공하는 것으로 보입니다. 따라서 첫 번째 단편을 최적화해야합니까? – Paparika

관련 문제