android - 无法在 Viewpager 中获取当前 View

标签 android

我正在使用 viewpager 跨多个页面显示一些文本。我正在尝试获取当前 View 并选择一个新页面。我想要获取当前 View 的原因是因为基于页码我正在更改某些 View 组件的一些属性,例如 textview、image 等。 我正在使用下面的代码来做同样的事情

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) {
          currView = mPager.getChildAt(mPager.getCurrentItem());
      myTextView = (TextView)currView.findViewById(R.id.myTextView);
              loadBookmarkSetting(pageSelected);//do some changes in myTextView    properties based on the page number  }
 mPager.setOnPageChangeListener(pageChangelistener);

现在我面临的问题是,在我滚动 3 页后,当我来到第 4 页时,我在“myTextView = (TextView)currView.findViewById(R.id.myTextView);”这一行上得到空指针异常。这是因为 currView 为空。如果我在这里做错了任何想法。有没有其他方法可以在 viewpager 中捕获当前 View (页面),以便我可以根据我所在的页码对 View 进行更改?

最佳答案

您可以将 setTag 与您在 instantiateItem 方法 (PagerAdapter) 中返回的 View 一起使用。

所以,当您在 PagerAdapter 中实例化您的 View 时,该方法也是 instantiateItem(ViewGroup container, int position)),您应该在 View 中使用 setTag。

像这样:

view.setTag("myview" + position);
return view;

当你需要当前 View 时:

View view = (View) pager.findViewWithTag("myview" + pager.getCurrentItem());

关于android - 无法在 Viewpager 中获取当前 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16332034/

相关文章:

android - 有没有办法从不扩展 Activity 类的类中调用 `overridePendingTransition`?

java - 无法实例化以下类 : com. google.android.gms.ads.AdView。帮我?

android - 在android中使用JDBC连接在mySQL上插入行的问题

android - 如何检测位置提供者? GPS 或网络供应商

android - SVG 在 Android 中保持纵横比

android - Android线性布局方向如何影响布局引力?

android - android-ndk-r6-crystax-2错误: 'string' in namespace 'std' does not name a type

java - 单击事件后从资源布局中 inflatedView

android - getSupportActionBar().setElevation(0) 不会从操作栏中删除阴影

android - libGDX- jogl 包在哪里?