- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
引用以下内容 answer ,我试图取消实现我目前在项目中所做的事情,即使用以下代码:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
由于当前的实现,我的 ViewPager
中的所有页面都被重新加载了。我首先实现它的原因是重新加载一个 fragment (根据用户输入是动态的)。
阅读引用资料后,我对我应该做什么有了一个模糊的想法,我覆盖了 instantiateItem()
方法,但在尝试 setTag()
我对如何实现这个感到困惑。我确实尝试了以下操作:
@Override
public Object instantiateItem(ViewGroup viewgroup, int position) {
// TODO Auto-generated method stub
View viewA = viewgroup.getChildAt(0);
viewA.setTag("FragmentA");
View viewB = viewgroup.getChildAt(1);
viewB.setTag("FragmentB");
View viewC = viewgroup.getChildAt(2);
viewC.setTag("FragmentC");
return super.instantiateItem(viewgroup, position);
}
在我的接口(interface)实现中,我调用了以下内容:
PlayingFragment fragment = new PlayingFragment();
fragment.setArguments(element);
getSupportFragmentManager().beginTransaction().add(fragment,"NowPlaying").commit();
adapter.notifyDataSetChanged();
pager.findViewWithTag("FragmentC");
当前的实现给了我一个NullPointerException
在:viewA.setTag("FragmentA");
有人可以帮我实现这个setTag()
和findViewWithTag()
实现吗?
最佳答案
当您调用 viewA.setTag("FragmentA") 时, View 组尚未初始化。这是这个异常的直接原因。
为避免此问题,您需要在设置 viewGroup 后设置标签,即您已膨胀 View 布局或创建 fragment 。
例如FragmentStatePagerAdapter的instantiateItem默认代码如下
@Override
public Object instantiateItem(ViewGroup container, int position) {
// If we already have this item instantiated, there is nothing
// to do. This can happen when we are restoring the entire pager
// from its saved state, where the fragment manager has already
// taken care of restoring the fragments we previously had instantiated.
if (mFragments.size() > position) {
Fragment f = mFragments.get(position);
if (f != null) {
return f;
}
}
if (mCurTransaction == null) {
mCurTransaction = mFragmentManager.beginTransaction();
}
Fragment fragment = getItem(position);
if (DEBUG) Log.v(TAG, "Adding item #" + position + ": f=" + fragment);
if (mSavedState.size() > position) {
Fragment.SavedState fss = mSavedState.get(position);
if (fss != null) {
fragment.setInitialSavedState(fss);
}
}
while (mFragments.size() <= position) {
mFragments.add(null);
}
fragment.setMenuVisibility(false);
fragment.setUserVisibleHint(false);
mFragments.set(position, fragment);
mCurTransaction.add(container.getId(), fragment);
return fragment;
}
您可以在创建 fragment/ View 时在 getItem 方法中设置标签。
关于android - 在 FragmentStatePagerAdapter 的 instantiateItem() 中实现 setTag() 和 findViewWithTag(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091171/
我正在尝试使用 PageAdapter。我发现 public Object instantiateItem( View pager, int position ) 已被弃用。所以我正在尝试更新但遇到了
在 ViewPager 的 CustomPagerAdapter 中,在 instantiateItem() 方法中,我尝试创建一个 TextView,然后根据特定条件为每个页面设置不同的文本。从页面
我是 android 编程的初学者。我正在使用按钮 onclick 使用下面的代码将新页面添加到 viewpager。但是,在滑动 Activity 中实例化项目时,viewpager 返回错误的位置
我试图找出一个 View 的绝对位置,但到目前为止它似乎更像是一个通过的相对位置,但话又说回来,有时它似乎也是基于纯粹的随机性? 看看我的 ViewPager 的这个输出,在 5 个 View 之间来
我正在尝试在我的应用程序中使用 PagerAdapter 实现 ViewPager。我主要工作 this example . 我的 PagerAdapter 称为 DataPagerAdapter 并
我想在 ViewPager 的 fragment 中设置一些 TextView。我在实例化页面时在我的 fragment 的 onActivityCreated 函数中设置我的 TextViews 。
我需要显示一个最初只显示一个 View 的 ViewPager。一旦此 View 通过测量和布局 channel ,根据这些结果,我可能需要更改适配器的内容。在这样做时,我遇到了这样一种情况,即 Vi
我试着让我的 FragmentPagerAdapter 工作,但是这些例子对于现实生活来说有点简单: @Override public Object instantiateItem(final Vie
我很好奇为什么 instantiateItem 被弃用,取而代之的是它的新版本。变化在于它现在接收 ViewGroup 而不是更通用的 View。 弃用的方法 public Object instan
我尝试使用滑动图像制作简单的应用程序。我用这篇文章http://www.androidbegin.com/tutorial/android-viewpager-gallery-images-and-t
我有 pagerAdapter 可以通过在 viewpager 中滑动来快速显示图像。我想在每个 viewpager 项目下方加载 gridview 图像。为了避免在快速滑动时加载所有 gridvie
我想使用 ViewPager 来显示一些加密的图像。为此,我创建了 PagerAdapter 的扩展,并将我的解密代码放在 instantiateItem 方法中。但问题是解密过程耗时过长。因此,我在
我的 logcat 在打印中第一次在重复此方法后占据位置 0 并占据位置 1,我不需要重复此方法。 public Object instantiateItem(ViewGroup container
我是 viewpager 的新手,我想使用 viewpager 创建 View ,这里所有的东西都是动态的,所以我按照这种方式进行,我的问题是 instantiateItem() 在创建时被调用了两次
当我切换到 viewPager2 时,我必须实现另一种类型的适配器(我使用 FragmentPagerAdapter,现在我使用 FragmentStateAdapter),现在我想调用具有旧适配器但
我有一个 ViewPager,其中每个页面显示使用 UniversalImageLoader 和图像 URL 加载全屏图像。 我正在使用 viewPager.setCurrentItem(n, fal
我想达到什么目的? 我有 5 张图片的 url 链接。我希望它们以幻灯片的形式显示在我的主屏幕上。 我知道该怎么做吗? 据我所知,是的。我能够在主屏幕内以自动幻灯片的形式显示 5 张图像 那问题是什么
我使用 ViewPager 创建向左滑动的 fragment ,现在我想将 fragment 插入每个 fragment 页面。 activityMain.xml 还有这个:
所以基本上我想为每个 View 位置使用单独的 XML 布局填充 ViewPager 中的页面。我目前正在通过 @Override public Object instantiateItem(
我对 FragmentPagerAdapter 有问题,我通过 FragmentPagerAdapter 在 viewpager 中设置了 fragment ,我必须动态显示 viewpager,
我是一名优秀的程序员,十分优秀!