Articles of android viewpager

第二次显示ViewPager时出现NullPointerException

我正在使用一个ViewPager片段,它有两个片段作为子片段。 这很好用,但是当我用另一个片段替换ViewPager片段并用ViewPager片段替换这个片段时,我的应用程序崩溃时出现以下NullPointerException : java.lang.NullPointerException: Attempt to invoke virtual method ‘int java.util.ArrayList.size()’ on a null object reference at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:667) at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:211) at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1319) at android.view.View.dispatchRestoreInstanceState(View.java:13756) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2888) at android.view.View.restoreHierarchyState(View.java:13734) at android.support.v4.app.Fragment.restoreViewState(Fragment.java:468) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1094) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5294) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) […]

工具命名空间属性,用于在设计时显示ViewPager中的布局

tools命名空间允许在布局设计器中显示视图属性。 例如,使用tools:listItem=”@layout/{custom_layout}可以在Android Studio设计器中显示包含自定义行布局的列表。 问题是: 是否可以在ViewPager显示布局?

Android ViewPager在设置当前项目/页面时抛出IndexOutOfBoundsexception

我有一个包含三个项目的ViewPager。 我试图设置ViewPager来查看最右边的页面(这将是第二个元素)。 这是返回一个IndexOutOfBoundsexception,虽然我知道索引应该在边界内。 这是确切的堆栈: 02-22 12:22:50.256: E/AndroidRuntime(384): FATAL EXCEPTION: main 02-22 12:22:50.256: E/AndroidRuntime(384): java.lang.IndexOutOfBoundsException: index=1 count=0 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addInArray(ViewGroup.java:2050) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addViewInner(ViewGroup.java:1994) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addViewInLayout(ViewGroup.java:1958) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addViewInLayout(ViewGroup.java:1939) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.support.v4.view.ViewPager.addView(ViewPager.java:917) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addView(ViewGroup.java:1828) 02-22 12:22:50.256: E/AndroidRuntime(384): at us.tagverse.pagertest.MasterActivity$PAdapter.instantiateItem(MasterActivity.java:518) 02-22 12:22:50.256: E/AndroidRuntime(384): at […]

ViewPager,其中一个页面包含多个片段“java.lang.IllegalArgumentException:找不到id的视图”

在我的小型Android应用程序中,我有一个包含3个页面的ViewPager ,每个页面包含一个片段,这些片段都可以正常使用FragmentStatePagerAdapter (参见前面的问题 )。 现在对于更大的屏幕,我想保留一个ViewPager ,但我希望前两个片段在同一个第一页上。 为此,我实现了我自己的PagerAdapter,这主要是工作,我试图解决的唯一问题是当我旋转屏幕时,我收到一个错误: 12-11 16:34:13.526: ERROR/AndroidRuntime(9221): FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.matthieu/com.matthieu.TestActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f030002 (com.matthieu:id/top_fragment) for fragment TestFragment{481a3a98 #0 id=0x7f030002} at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3815) at android.app.ActivityThread.access$2400(ActivityThread.java:125) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4627) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871) […]

Android – 使用FragmentActivity + Loader更新FragmentStatePagerAdapter的问题

我正在尝试使用FragmentActivity和ViewPager来显示Fragments动态列表。 有很多关于如何做静态版本的例子。 我的问题是我显示的列表需要动态加载,也可以根据用户输入(添加/删除)进行更改。 我正在尝试使用自定义的android.support.v4.content.Loader来加载我可用于构建列表的数据集。 在我的设置中一切正常,直到我想要更新适配器并发出FragmentStatePagerAdapter#notifyDataSetChanged()调用,此时执行此代码(来自FragmentStatePagerAdapter ) public void finishUpdate(View container) { if(mCurTransaction != null) { mCurTransaction.commit(); // BANG!!! The exception is thrown mCurTransaction = null; mFragmentManager.executePendingTransactions(); } } 事务提交失败,并显示以下消息: java.lang.IllegalStateException: Can not perform this action inside of onLoadFinished 因为在FragmentManagerImpl中执行此代码: private void checkStateLoss() { if (mStateSaved) { throw new IllegalStateException( “Can not perform this action after […]

片段作为Android中的单身人士

一般问题我可以将碎片定义为单身人士吗? 具体问题在我的应用程序中,我有一个’FragmentActivity’和FragmentPager ,它有两个片段, FragmentA和FragmentB 。 我将片段定义为FragmentA Singletons扩展Fragment类: private static instance = null; public static FragmentA getInstance() { if (instance == null) { instance = new FragmentA(); } return instance; } private FragmentA() {} 在我的FragmentPagerAdapter : @Override public Fragment getItem(int position) { switch(position){ Fragment fragment = null; case 0: fragment = FragmentA.getInstance(); break; case 1: fragment […]

如何在viewpager的特定选项卡中显示当前片段?

我想在tab b_1获取最后一个片段,或者当前显示的内容与我相同。 正如您在下图中看到的那样,我有一个ViewPager,另一个是内部tab b 。 因此,显示了四个当前片段。 问题 :如何获取Fragment 2实例? 我见过另一种解决方案,但没有一种适用于这种情况。 注释: ViewPager中托管的片段不是必需的。 我可以在一个标签中打开另外两个片段。 使用这种方法,我得到所有当前可见的片段,但不是我想要的特定片段。 public ArrayList getVisibleFragment() { List fragments = getSupportFragmentManager().getFragments(); ArrayList visibleFragments = new ArrayList(); if (fragments != null) { for (Fragment fragment : fragments) { if (fragment != null && fragment.isVisible()) visibleFragments.add(fragment); } } return visibleFragments; } 一些有趣的代码 activity_main.xml中 MainActivity.java public class […]

测量ViewPager

我有一个具有子ViewPager的自定义ViewGroup。 ViewPager由一个PagerAdapter提供,它为PagerAdapter提供了一个LinearLayout ,它在高度和宽度上都有WRAP_CONTENT LayoutParams 。 视图显示正确,但是当在child.measure()上调用child.measure()方法时,它不返回LinearLayout的实际尺寸,但似乎填充了所有剩余空间。 任何想法为什么会发生这种情况以及如何修改它?

使用ViewPager的Android ClassNotFoundException

我收到以下错误,我不明白… 06-15 22:06:49.196: W/dalvikvm(17622): threadid=1: thread exiting with uncaught exception (group=0x40bcc1f8) 06-15 22:07:05.031: W/dalvikvm(17877): threadid=1: thread exiting with uncaught exception (group=0x40bcc1f8) 06-15 22:07:05.031: E/AndroidRuntime(17877): FATAL EXCEPTION: main 06-15 22:07:05.031: E/AndroidRuntime(17877): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.whipple.android/com.whipple.android.StockActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class ViewPager 06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 06-15 22:07:05.031: E/AndroidRuntime(17877): at […]

如何在ViewPager上进行循环滚动?

我想将我的ViewPager设置为循环滚动。 我希望第一页能够滚动到第2页和最后一页。 我希望我的最后一页滚动到[最后一页-1]和第一页。 我已经尝试了,虽然我不确定何时调用我创建的方法。 在ViewPager中似乎没有一种方法可以处理这种事情,所以我创建了以下内容。 public ViewPagerAdapter(final ViewPager pager, int… pageIDs) { super(); int actualNoOfIDs = pageIDs.length; count = actualNoOfIDs + 2; Log.d(TAG, “actualNoOfIDs: ” + actualNoOfIDs + “count: ” + count); pageIDsArray = new int[count]; for (int i = 0; i < actualNoOfIDs; i++) { pageIDsArray[ i + 1] = pageIDs[i]; } pageIDsArray[0] = […]