在使用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;
}
}
答案 0 :(得分:2)
:
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-------
}
答案 1 :(得分:-1)
我假设你想从你的活动中访问你的片段并更新视图。片段是活动的一部分,它们的视图可以被它们访问。片段是在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");
}