我有一项使用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
// ...
}
}
答案 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();