2

我有一个使用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”时,我的活动想要调用当前片段的方法。但是activity怎么知道的currentFragment

我要这个:

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

2 回答 2

0

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

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

查看这些问题和答案以了解详细信息:

作为 ViewPager 的一部分更新 ListFragment 中的数据

是否可以访问 ViewPager 正在查看的当前片段?

于 2013-05-22T14:52:06.510 回答
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();
于 2013-08-13T17:28:59.220 回答