繁体   English   中英

使用fragmentStatePagerAdapter更新viewpager中的片段/视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM