2013-03-11 47 views
0

我正在研究一個ViewPager中有3個頁面的應用程序。但是,我無法在滑動頁面時更改片段。請任何一個可以幫助我瞭解如何做到這一點....如何在更改頁面時更改視圖頁面中的片段或頁面

public class HomePage extends FragmentActivity { 

    ViewPager viewPager; 
    PagerTabStrip pagerTabStrip; 
    PagerAdapter adapter; 
    TextView pageTag; 

    FragmentManager fragmentManager; 
    FragmentTransaction fragmentTransaction; 

    /* 
    * ActionBar Fragment Class 
    */ 

    ActionBar actionBar; 

    Fragment fragment; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.homepage); 

     /* 
     * Setting adapter for viewPager 
     */ 
     viewPager = (ViewPager) findViewById(R.id.pager); 
     adapter = new TabView(getSupportFragmentManager()); 
     viewPager.setAdapter(adapter); 

     /* 
     * Setting coustom Animation for ViewPager 
     */ 

     viewPager.setPageTransformer(true, new CoustomPageTransform()); 

     /* 
     * All properties for pagerTabStrip // 
     */ 
     pagerTabStrip = (PagerTabStrip) findViewById(R.id.tabstrip); 
     pagerTabStrip.setDrawFullUnderline(true); 
     pagerTabStrip.setTabIndicatorColor(Color.parseColor("#33B5E5")); 
     pagerTabStrip.setTextSpacing(80); 
     pagerTabStrip.setTextColor(Color.parseColor("#666666")); 

     /* 
     * Setting Up ActionBar Fragment 
     */ 

     if (savedInstanceState != null) { 

      actionBar = new ActionBar(); 
      fragmentManager = getSupportFragmentManager(); 
      fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.add(R.id.fragment_container, actionBar) 
        .commit(); 

     } 

    } 

    public class TabView extends FragmentStatePagerAdapter { 

     public TabView(FragmentManager fm) { 
      super(fm); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public Fragment getItem(int position) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 

      switch (position) { 
      case 0: 

       return "TASKS"; 

      case 1: 
       return "WORKBOOK"; 

      case 2: 
       return "ITINERARY"; 
      default: 
       break; 
      } 
      return null; 
     } 

    } 

    public class CoustomPageTransform implements ViewPager.PageTransformer { 

     float MIN_SCALE = 0.85f; 
     float MIN_ALPHA = 0.5f; 

     @Override 
     public void transformPage(View view, float position) { 

      int pageHeight = view.getHeight(); 
      int pageWidth = view.getWidth(); 

      if (position < -1) { 
       view.setAlpha(0); 
      } else if (position <= 1) { 
       float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); 
       float vertMargin = pageHeight * (1 - scaleFactor)/2; 
       float horMargin = pageWidth * (1 - scaleFactor)/2; 

       if (position < 0) { 

        view.setTranslationX(horMargin - vertMargin/2); 

       } else { 

        view.setTranslationX(-horMargin + vertMargin/2); 

       } 

       view.setScaleX(scaleFactor); 
       view.setScaleY(scaleFactor); 

       view.setAlpha(MIN_ALPHA + scaleFactor - MIN_SCALE 
         /(1 - MIN_SCALE) * (1 - MIN_ALPHA)); 
      } else { 
       view.setAlpha(0); 
      } 

     } 
    } 

} 
+0

檢查頁碼和膨脹它與不同的佈局 – silverFoxA 2015-05-03 04:22:51

回答

1

不必返回任何碎片......你在你的適配器返回null所以當然你不會看到/做任何事...

在您的適配器中,您應該保留所需碎片的清單/集合,並根據該位置返回它們。

0

嘗試這樣!我不是很確定你想要做什麼,但這個代碼,你可以改變並刷「頁」

public class MainActivityEPG extends FragmentActivity { 

    SectionsPagerAdapter mSectionsPagerAdapter; 
    static Context c; 
    PagerTitleStrip pagerTabStrip; 

    static ViewPager mViewPager; 

    @Override 
    public void onBackPressed() { 
     MainActivity2.deleteBackground(false); 
     finish(); 
     super.onBackPressed(); 
    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.epg_ui); 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     pagerTabStrip = (PagerTitleStrip) findViewById(R.id.pager_title_strip); 
      mViewPager.setAdapter(mSectionsPagerAdapter); 
    } 

    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      Fragment fragment = new DummySectionFragment(); 
      Bundle args = new Bundle(); 
      args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
      fragment.setArguments(args); 
      return fragment; 
     } 

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


     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      pagerTabStrip.setAlpha(150f); 
     pagerTabStrip.setBackgroundColor(Color.parseColor("#80000000"));     

        switch (position) { 
      case 0: 
        return getString(R.string.title_section1); 
      case 1: 
       return getString(R.string.title_section2); 
      case 2: 
       return getString(R.string.title_section3); 
      case 3: 
       return getString(R.string.title_section4); 
      case 4: 
       return getString(R.string.title_section5); 
      case 5: 
       return getString(R.string.title_section6); 
      } 
      return null; 
     } 
    } 

    public static class DummySectionFragment extends Fragment { 

     public static final String ARG_SECTION_NUMBER = "section_number"; 

     public DummySectionFragment() { 

     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 

      View rootView = inflater.inflate(R.layout.fragment_main_dummy, 
        container, false); 


      return rootView; 
     } 
    } 

}