0

android.support.v7.app.ActionBar.TabListener, ViewPagerFragmentPagerAdapter으로 Android에서 제공하는 Activity 탭을 사용하고 있습니다. 부모 Activty cointains 및 관리 세 Fragment. 또한 상위 액티비티에는 조각에서 제공하는 데이터를 저장하는 메소드가 있습니다. 그들에 정의 된 데이터를 얻을 수 (부모 활동에 의해 발송에 실패)하기 위해 나는 다음과 같은 코드를 작성하고 있습니다 : getActiveFragment()는 사실findFragmentByTag()는 ActioBar의 세 번째 탭에서만 null을 반환합니다.

 public Fragment getActiveFragment(ViewPager container, int position, FragmentManager mFragmentManager) { 
      String name = makeFragmentName(container.getId(), position); 
      return mFragmentManager.findFragmentByTag(name); 
     } 


     private String makeFragmentName(int viewId, int index) { 
      return "android:switcher:" + viewId + ":" + index; 
     } 

입니다

MyFragment frag = (MyFragment) mSectionsPagerAdapter.getActiveFragment(mViewPager,1,getSupportFragmentManager());

을, 나는 다음과 같은 한 문제 : 세 조각에서 제공하는 데이터를 저장하려고하면 NULL 인 세 번째 조각으로 인해 java.lang.NullPointerException이 발생합니다. 내 장치에 두 번째 또는 세 번째 조각을 표시하지 않는 경우에만 발생합니다. 이 동작을 피하고 수정하는 방법을 모르겠습니다. 제안 사항이 있으십니까?

답변

2

첫 번째 탭/조각 만 표시되는 경우 세 번째 조각이 만들어지지 않기 때문입니다. 기본값 인 ViewPager는 내부적으로 보이는 조각을 남겨두고, 오른쪽에있는 조각을 준비합니다. 시도

viewpager.setOffscreenPageLimit(2)