Articles of fragmentpageradapter

IllegalStateException:无法更改片段的标签是android:switcher now android:switcher

我的活动使用TabLayout + ViewPager 。 此处的选项卡和页面数量是动态的,具体取决于从服务器获取的数据。 崩溃是通过Crashlytics报道的,我无法复制它。 我的活动代码: @Override protected void onCreate(Bundle savedInstanceState) { boolean isAppRestarting = PrefUtils.getBoolean(“app_restarting”, false); if (isAppRestarting) { super.onCreate(null); this.savedInstanceState = null; } else { super.onCreate(savedInstanceState); this.savedInstanceState = savedInstanceState; } initSlidingTabs(); fetchSomeData(); // see onDataFetched() below } private void initSlidingTabs() { List sdsTabs = new ArrayList(); Logger.i(“There is saved instance state”); ArrayList […]

设计支持TabLayout

我正在玩设计支持库TabLayout。 我的问题是其中一个标签的标题太长,因此,它是在2行而不是1上绘制的。我想知道是否有一种方法缩放标题文本大小以确保所有标题都在1行上绘制。 这是一个截图,以更好地解释我的问题: 如果细节很重要,我正在使用Design Support TabLayout,一个ViewPager和一个FragmentPagerAdapter来填充我的标签。 提前致谢!

Android FragmentStatePagerAdapter

我正在使用这个例子使用FragmentStatePagerAdapter。 MyAdapter类实现如下: public static class MyAdapter extends FragmentStatePagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return NUM_ITEMS; } @Override public Fragment getItem(int position) { return ArrayListFragment.newInstance(position); } } ListFragment类包含以下创建新实例的方法: /** * Create a new instance of CountingFragment, providing “num” * as an argument. */ static ArrayListFragment newInstance(int num) { ArrayListFragment […]

FragmentPagerAdapter – 如何处理方向更改?

我使用FragmentPagerAdapter包含几个需要通知数据库更改的片段。 我通过遍历实现回调接口的片段并调用refreshData()方法来完成此操作。 这可以正常工作,直到设备改变方向。 方向更改后,即使方法调用似乎有效,片段UI也不会明显刷新。 从我到目前为止所读到的,这是因为FragmentPagerAdapter处理片段生命周期,并且接收回调的片段不是实际显示的片段。 private class DataPagerAdapter extends FragmentPagerAdapter { private DataFragment[] fragments = new DataFragment[] { new FooDataFragment(), BarDataFragment()}; public DataPagerAdapter(android.support.v4.app.FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragments[position]; } @Override public int getCount() { return fragments.length; } public DataFragment[] getFragments() { return fragments; } } protected void refreshData() […]

如何使用FragmentPagerAdapter获取包含不同内容的标签?

我希望有不同的标签,你可以在Android市场中轻扫。 每个选项卡应使用一个片段并使用一种方法。 这是我的FragmentPagerAdapter类: public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment =null; switch (position) { case 0: fragment = new ConnectionFragment(); break; case 1: fragment = new DataFragment(); break; case 2: fragment = new GraphFragment(); break; } return fragment; } @Override public int […]

尝试在空对象引用上调用虚方法’android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()’

我的应用程序包含4个片段作为使用FragmentPagerAdapter加载到父片段内的制表符。 问题是,当我运行应用程序并按下并重新打开应用程序时,我收到此错误日志: FATAL EXCEPTION: main java.lang.NullPointerException: Attempt to invoke virtual method ‘android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()’ on a null object reference at android.support.v4.app.FragmentManagerImpl.ensureExecReady(FragmentManager.java:1949) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1965) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:620) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:513) … 父片段内的代码行是: viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); 和ViewPage和Adapter都不是空的! 我必须提到我的所有Fragment的生命周期都在管理中,并且在适配器内部发生了null问题!当我使用Activity作为父级而不是Fragment时,同样的适配器工作正常!

在恢复活动时刷新FragmentStatePagerAdapter上的图像

我创建了一个使用FragmentStatePagerAdapter提供小图库的活动。 但是,当活动恢复时(例如,从其他活动返回后),我无法刷新它。 每次前两张图片都是空白的,只有在我将两张图片刷到一边后,它们才会刷新。 我find的答案都没有起作用(尤其是覆盖getItemPosition() ) 我这样设置: mPagerAdapter = new PhotosPagerAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.photosViewPager); mPager.setAdapter(mPagerAdapter); 然后我有FragmentStatePagerAdapter类: private class PhotosPagerAdapter extends FragmentStatePagerAdapter{ public PhotosPagerAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return photos.size(); } @Override public Fragment getItem(int position) { ImageFragment f = new ImageFragment(position); return f; } @Override public int getItemPosition(Object object) { […]

FragmentPagerAdapter滑动以显示ListView 1/3屏幕宽度

编辑: 请参阅下面的答案 – > 我想要一个视图,当向右滑动时,会显示listView。 与新版Google Play商店中实施的内容非常相似(下面的示例图片)。 我认为它是一个ViewPager,但我尝试重复它没有占上风。 我认为可能只是’listView Page’width属性设置为特定的dp但不起作用。 我也尝试修改pakerfeldt的viewFlow并且无法弄清楚Google是如何做到这一点的 我是在正确的轨道上吗? 如果有人知道如何复制这个,我会非常感激。 我认为这可能成为在平板电脑上显示导航视图的一种流行的新方式….? 代码将是最好的帮助。 谢谢!! 向右滑动: 刷完; 布局显示列表和第二部分(完全如图所示)列表片段未填满屏幕: 当用户向左滑动时,仅显示主页面,如果用户再次向左滑动,则viewPager继续到下一页面。

使用getItemPosition(Object object)重新排序FragmentStatePagerAdapter中的页面

我相信当重写getItemPosition(Object object)时,FragmentStatePagerAdapter的行为不正确,目的是重新排序页面。 下面是一个简单的例子。 在初始状态中,页面的顺序是{A,B,C}。 在调用toggleState() ,页面的顺序变为{A,C,B}。 通过重写getItemPosition(Object object) ,我们确保正在查看的当前页面(A,B或C)不会更改。 public static class TestPagerAdapter extends FragmentStatePagerAdapter { private boolean mState = true; public TestPagerAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override public int getCount() { return 3; } private void toggleState() { mState = !mState; notifyDataSetChanged(); } private String getLabel(int position) { switch (position) { case 0: return […]

IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容

我正在使用ViewPager示例,其中包含从Android文档中获取的ActionBar选项卡。 不幸的是,只要我调用addTab方法,应用程序崩溃就会出现以下exception: IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容! 预期的适配器项目数0,find1。 这是FragmentPagerAdapter代码: public static class TabsAdapter extends FragmentPagerAdapter implements ActionBar.TabListener, ViewPager.OnPageChangeListener { private final Context mContext; private final ActionBar mActionBar; private final ViewPager mViewPager; private final ArrayList mTabs = new ArrayList(); static final class TabInfo { private final Class clss; private final Bundle args; TabInfo(Class _class, Bundle _args) { clss = _class; […]