0

我有一個包含5個片段的視圖分頁器的選項卡。在方向改變後無法與ViewPager中的片段進行通信

當使用onPageSelected被稱爲那麼我告訴當前片段動畫了使用

((ItemFragment) pagerAdapter.getItem(position)).animateUp(); 

和片段裏面

public void animateUp(){ 
    if(linearLayout != null){ 
      linearLayout.animate().translationYBy(-75)); 
    } 
} 

似乎一切,直到我旋轉設備工作正常。顯示片段,我可以移動它們,但animateUp()方法不起任何作用。似乎viewpager沒有引用正在顯示的片段。

編輯:的onCreate是空的,這裏是onCreateView

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_explore_tab, container, false); 
    pager = (MultiViewPager)rootView.findViewById(R.id.pager); 

    List<Fragment> fragmentsList = new ArrayList<>(); 
    for(int i = 0; i < header.length; i++){ 
     ItemFragment fragment = new ItemFragment(); 
     Bundle bundle = new Bundle(); 
     bundle.putInt(ItemFragment.IMAGE_KEY, header[i]); 
     fragment.setArguments(bundle); 
     fragmentsList.add(fragment); 
    } 

    pager.addOnPageChangeListener(new OnPageChangeListener() { 

     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     } 

     @Override 
     public void onPageSelected(int position) { 
      ((ItemFragment) pagerAdapter.getItem(position)).animateUp(); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
     } 
    }); 

    pagerAdapter = new BaseFragmentPagerAdapter(getChildFragmentManager(), fragmentsList); 
    pager.setAdapter(pagerAdapter); 

    return rootView; 
} 
+0

你可以發佈你的'onCreate'代碼嗎? –

+0

發表了該方法 – MikeC

回答

0
if(linearLayout != null){ *your listener change to null when you rotate device* 
      linearLayout.animate().translationYBy(-75)); } 

您必須訂閱收聽一次。嘗試在onResume上執行此操作

相關問題