![](/img/trans.png)
[英]Remove all fragments from ViewPager populated by FragmentStatePagerAdapter
[英]Updating fragments/views in viewpager with fragmentStatePagerAdapter
在使用viewpager时更新页面的问题需要一些帮助。 我正在使用FragmentStatePagerAdapter的简单viewpager。 我想要做的就是访问当前的片段/视图,以便我可以更新片段/视图中的一些文本视图。 我在论坛中搜索并了解了一些事情 - 处理此问题的方法之一是在适配器的instantiateItem()调用中设置标记并通过findViewbyTag检索视图。 我无法理解如何实现这一点,我也不确定它是否适用于FragmentStatePagerAdapter。 - 我探讨了各种论坛中提出的其他选项,但无法使它们发挥作用。
我的代码与android http://developer.android.com/training/animation/screen-slide.html中的代码非常相似。 基本组件是相同的(片段活动xml,其中一些显示组件包括textview,viewpager xml只有一个视图分页器,一个Fragment类和主要的FragmentActivity类)。 在我的FragmentActivity类中,我向viewpager添加了一个pageChangelistener,以便在onPageSelected()期间进行textview更改。
任何帮助是值得赞赏的。
添加代码以供参考。
Public class myActivity extends FragmentActivity
//Variable declarations
protected void onCreate(Bundle savedInstanceState) {
ViewPager mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
View CurrView;
OnPageChangeListener pageChangelistener = new OnPageChangeListener() {
@Override
public void onPageSelected(int pageSelected) {
doTextViewChnges();//access the text view and update it based on pageSelected
---THIS IS WHERE I AM STUCK IN TRYING TO GET THE TEXTVIEW IN MY CURRENT FRAGMWNT/VIEW-------
}
mPager.setOnPageChangeListener(pageChangelistener);
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
return ScreenSlidePageFragment.create(position, <other parameters I want to pass>);
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
在OnPageChangeListener中:
OnPageChangeListener pageChangelistener = new OnPageChangeListener() {
@Override
public void onPageSelected(int pageSelected) {
ScreenSlidePageFragment currentFragment = (ScreenSlidePageFragment) mPagerAdapter.getItem(pageSelected)
doTextViewChnges();//access the text view and update it based on pageSelected
---THIS IS WHERE I AM STUCK IN TRYING TO GET THE TEXTVIEW IN MY CURRENT FRAGMWNT/VIEW-------
}
我假设你想从你的活动中访问你的片段并更新视图。片段是活动的一部分,它们的视图可以被它们访问。 片段是在viewadapters中动态创建的,没有直接且简单的方法来标记它们。 您可以通过索引号简单地访问片段。第一个是0秒,一个是1,依此类推......
//access your fragment(in your case your first fragment)
//this part should be inside your doTextViewChnges()
Fragment fragment = (Fragment ) adapterViewPager
.getFragment(0);
if (fragment != null) {
//call a public method inside your fragment to update your text view
fragment .updateYourTextView();
}
编辑:在您的片段内创建以下方法并从那里更新您的textview。
void updateYourTextView() {
yourTextView.setText("yourtext");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.