2015-01-02 72 views
0

我試圖在屏幕上顯示片段(我正在使用ViewPager)時開始動畫。進入片段查看

這我的代碼的一部分

public class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 

     private Map<Integer, String> mFragmentTags; 
     private FragmentManager mFragmentManager; 

     public ScreenSlidePagerAdapter(FragmentManager fm) { 
      super(fm); 
      mFragmentManager = fm; 
      mFragmentTags = new HashMap<Integer, String>(); 
     } 

     public ScreenSlidePageFragment getFragment(int position) { 
      String tag = mFragmentTags.get(position); 
      if (tag == null) 
       return null; 
      return (ScreenSlidePageFragment) mFragmentManager.findFragmentByTag(tag); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return ScreenSlidePageFragment.create(position); 
     } 

     @Override 
     public int getCount() { 
      return NUM_PAGES; 
     } 



     @Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      Object obj = super.instantiateItem(container, position); 
      if (obj instanceof Fragment) { 
       // record the fragment tag here. 
       Fragment f = (Fragment) obj; 
       String tag = f.getTag(); 
       mFragmentTags.put(position, tag); 
       System.out.println("holi"); 
      } 
      return obj; 
     } 

    } 

public class ScreenSlideActivity extends FragmentActivity { 
    (...) 
    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_screen_slide); 

      // Instantiate a ViewPager and a PagerAdapter. 
      mPager = (ViewPager) findViewById(R.id.pager); 
      mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager()); 

    (...) 

    SimpleOnPageChangeListener mPageChangelistener = new ViewPager.SimpleOnPageChangeListener() { 
       @Override 
       public void onPageSelected(int position) { 
        // When changing pages, reset the action bar actions since they are dependent 
        // on which page is currently active. An alternative approach is to have each 
        // fragment expose actions itself (rather than the activity exposing actions), 
        // but for simplicity, the activity provides the actions in this sample. 
        ScreenSlidePageFragment currentFgm = mPagerAdapter.getFragment(position); 
        Animation animacion = AnimationUtils.loadAnimation(ScreenSlideActivity.this, R.anim.glasses); 
        currentFgm.getView().findViewById(R.id.image).startAnimation(animacion); 
        invalidateOptionsMenu(); 
       } 
(...) 

問題是,當onPageSelected被稱爲回報

currentFgm.getView().findViewById(R.id.image).startAnimation(animacion); 

一個空指針異常我怎麼能當啓動動畫片段顯示在屏幕上?

回答

0

如果您嘗試將動畫添加到ViewPager,則可以實現ViewPager.PageTransformer界面並將其提供給視圖分頁器以顯示與默認屏幕幻燈片動畫不同的動畫。

ViewPager mPager = (ViewPager) findViewById(R.id.pager); 
... 
mPager.setPageTransformer(true, new CustomTransformer()); 

你會發現here兩個PagerTransformers的例子。

+0

對不起,我沒有解釋清楚。當顯示片段(頁面轉換後)時,應該啓動圖像中的動畫。 – Hanzo