- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是最初直接加载 fragment 并且我想调用一个方法 fragment 对用户可见。
为了加载正确的 fragment ,我在 onCreate
中使用了 viewPager.setCurrentItem()
。它运行良好。
FragmentActivity代码
:
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mTabsAdapter = new TabsPlayerAdapter(this, mRadioList);
mMainViewPager.setAdapter(mTabsAdapter);
mMainViewPager.setOnPageChangeListener(this);
mMainViewPager.setCurrentItem(2);
}
对于一个名为 Current fragment 的方法,我使用了 onPageSelected viewPager
。它运行良好。
FragmentActivity代码
:
@Override
public void onPageSelected(int position) {
Log.d(TAG, "onPageSelected - position: " + position);
((PlayerFragment) mTabsAdapter.mSparseFragment.get(position))
.startAnnimation();
}
FragmentStatePagerAdapter代码:
@Override
public Fragment getItem(final int position) {
Log.d(TAG, "getItem - position: " + position);
Bundle args = new Bundle();
args.putString("num", mRadioModel.get(position).name);
mSparseFragment.put(position, Fragment.instantiate
(mContext,PlayerFragment.class.getName(), args));
return mSparseFragment.get(position);
}
FragmentStatePagerAdapter 代码:
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
Log.d(TAG, "destroyItem - position: " + position);
mSparseFragment.remove(position);
}
我可以分别做这两件事。但是,当我尝试将两者结合使用时,在调用我的 fragment
时出现了 "NullPointerException"
。
我看到 onPageSelected
在我的 Adapter
中的 getItem
之前被调用。
最佳答案
解决方法很简单:
在你的适配器中写:
public static interface FirstShot
{
public void onFirstShot();
}
private FirstShot firstShot;
private boolean shot = false;
@Override
public Fragment getItem(int arg0)
{
if (!shot && firstShot != null)
{
shot = true;
firstShot.onFirstShot();
}
// your code here
}
现在在 Activity 中实现 FirstShot:
@Override
public void onFirstShot()
{
viewPager.post(new Runnable()
{
@Override
public void run()
{
boolean needNotify = false;
if (pager.getCurrentItem() == position) needNotify = true;
viewPager.setCurrentItem(position, false);
if (needNotify) onPageSelected(position);
}
});
}
onPageSelected() 现在调用!
关于android - 我可以在viewPager中使用setCurrentItem并使用onPageSelected吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070339/
我有一个包含一个 ViewPager(没有别的)的 Activity 。我使用的 fragment 非常简单。它们由带有两个按钮(后退和前进)的平面背景组成。 当 ViewPager 随用户输入滚动时
我像这样创建一个自定义 View 寻呼机: public class TaskPagerAdapter extends FragmentStatePagerAdapter { public TaskP
setCurrentItem() 函数不适用于以下 android(java) 代码如何使其工作? Intent i = getIntent(); int position = i.g
我有一个包含 ViewPager 的 Activity,此 ViewPager 中的第一个 Fragment 包含 ListView,当我单击任何 Item 时,它会用选定的一个替换此 Fragmen
我正在尝试为本地 Activity 制作一个应用程序,以允许裁判快速判断表现。现在,我正在使用一个 View 寻呼机,如果不在页面中输入必要的结果,它们将不允许他们前进页面。我还让页面在他们输入结果后
当我在 ViewPager 上执行滑动操作时,页面会滑动,但如果我从选项卡执行 viewPager.setCurrentItem(pageNum),它会重置页面但不会滑动。如何以编程方式使页面滑动?
在 PyQt 中,我可以使用 QListWidget.setCurrentItem(item) 让 QListWidget 以编程方式选择一个项目。当然,这会在我的 QListWidget 中为我选择
我遇到了一个奇怪的问题,并且在过去的三个小时内无法解决这个问题。所以我需要帮助。我正在创建一个类似于 Play Music 中的 PlayerUI。该 Activity 有一个 ViewPager 并
我正在使用这段代码来创建 InfiniteViewPager: pAdapter = new InfinitePagerAdapter(new MyPagerAdapter()); Infinitiv
我使用 PagerAdapter。我有很多元素,所以我不会同时加载所有元素。我重新加载适配器,用新元素更改旧元素。例如,我有 4 个元素,当我到达最后一个元素时,我重新加载这些元素并调用 setCur
该应用程序使用 android viewpager2 (androidx.viewpager2:viewpager2:1.0.0-beta04) 来显示幻灯片。每张幻灯片的上半部分都有视频,下半部分有
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 4 年前。 错误: java.lang.Nu
我正在使用 qReader 库,根据我的日志,该库按预期工作,与大错误日志相反,除非尝试在 MainFragment 中使用 viewPager.setCurrentItem(0) 更改 fragme
在我的 MainActivity 的 Oncreate 中,我添加了这段代码: mDateAreaSlider.addOnPageChangeListener(new ViewPager.OnPage
这是我的 tabLayoutCode mTabLayoutBerita.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
对于我的项目,我使用可滑动的选项卡在列表之间导航。当删除其中一个列表时,我希望有一个流畅的动画并尝试通过使用 viewpager.setCurrentItem(page, true); 来存档它,以便
我想通过 viewpager 选项卡 fragment 更改在按钮单击中传递一些值。我有两个问题。 传递数据的最佳方式是什么? 如果我使用静态数据会有什么问题?比如: public static st
我的 ViewPager 附加的 TabLayout 有问题。重现步骤: 从第一个选项卡开始。 选择第二个标签。 按下后退按钮——我的代码看到用户在第二个选项卡上,并调用 viewPager.setC
我正在使用来自 Android 支持 v13 的 ViewPager,我想使用 setCurrentItem(int) 滚动到特定项目,但是当我尝试滚动超过 2 个页面时,应用程序卡住,几秒钟后,系统
我正在使用 viewpager 和标签布局 viewPager.setAdapter(Adapter); tablayout.setupWithViewPager(viewPager)
我是一名优秀的程序员,十分优秀!