如何获取使用ViewPagerIndicator的活动中的当前片段(JakeWharton Library)

时间:2012-09-03 08:37:28

标签: android android-fragments

我有一项使用ViewPagerIndicator的活动。 我实现了一个扩展PagerAdapter的类FragmentPagerAdapter,以便在页面上设置片段。

在我的活动中,这是我的代码:

@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
        // ...
    }
}

2 个答案:

答案 0 :(得分:0)

是的,您可以获得当前片段:

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

查看以下问题和答案以获取详细信息:

Update data in ListFragment as part of ViewPager

Is it possible to access the current Fragment being viewed by a ViewPager?

答案 1 :(得分: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();