2012-09-03 37 views
2

我有一個使用ViewPagerIndicator的活動。 我已經實現了一個延伸FragmentPagerAdapter的類PagerAdapter,以設置頁面上的片段。如何在使用ViewPagerIndicator的活動中獲取當前片段(JakeWharton Library)

在我的活動,這是我的代碼:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mAdapter = new PagerAdapter(getSupportFragmentManager()); 
    mPager = (ViewPager)findViewById(R.id.pager); 
    mPager.setAdapter(mAdapter); 
    mIndicator = (CirclePageIndicator)findViewById(R.id.indicator); 

    mIndicator.setViewPager(mPager); 
} 

我的活動也有一個菜單選項,以選擇 「A」。當用戶點擊選項菜單並選擇「A」時,我的活動想要調用當前片段的方法。但是,活動如何知道currentFragment

我想這一點:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
     case R.id.A: 
      getCurrentFragment.Method(); //Method is the method that want to execute 
     // ... 
    } 
} 

回答

0

你自己回答了你的問題。哪裏不對。 我有同樣的問題。我有一個按鈕,我想在不同的片段中完成不同的任務。我用這個代碼:

indicator.setOnPageChangeListener(new OnPageChangeListener() { 
@Override 
     public void onPageSelected(final int position) { 
      // TODO Auto-generated method stub 

      btn_calculate.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        switch (position) { 
         case 0: 
          Fragment0.calculator(); 
          break; 
         case 1: 
          Fragment1.calculator(); 
          break; 
         case 2: 
          Fragment2.calculator(); 
          break; 

        } 

       } 
      }); 

,並使用此代碼來訪問您的片段:

YourownFragment fragment = 
     (YourownFragment) getSupportFragmentManager().findFragmentByTag(
        "android:switcher:"+R.id.viewpager+":0"); 

也ü可以使用此代碼訪問到當前片段:

int current_item = mPager.getCurrentItem(); 
相關問題