Articles of android viewpager

片段作为Android中的单例

一般问题我可以定义碎片为单身? 具体问题在我的应用程序中,我有一个“FragmentActivity”与FragmentPager有两个片段, FragmentA和FragmentB 。 我在FragmentA扩展Fragment类中将FragmentA定义为Singletons: 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 = FragmentB.getInstance(); […]

在第一页上select的ViewPager onPageSelected

所以看起来在使用ViewPager时,onPageSelected监听器不会像第一页那样被调用。 我有一些逻辑,为当前选定的页面填充一些更昂贵的UI元素,这在页面更改时有效,但it doesn't work for the first page. 如果我在侦听器之后设置了当前项目,callback会被触发,但是视图尚未初始化,所以我无法操作它: // Inside PagerAdapter.instantiateItem ViewHolder vh = new ViewHolder(); cursor.moveToPosition(position); vh.view = adapter.newView(context, cursor, null); // Set position as tag so we can retrieve it with findViewByTag vh.view.setTag(position); ((ViewPager) collection).addView(vh.view,0); return vh; // Inside MyActivity.onCreate pagerAdapter = new SingleMessagePagerAdapter(this, cursor); pager = (ViewPager)findViewById(R.id.message_pager); pager.setAdapter(pagerAdapter); pager.setOnPageSelectedListener(this); pager.setCurrentItem(selectedItem); // […]

Android:ViewPager卡在视图之间

我有一个在碎片之间滑动的ViewPager。 我正在使用FragmentStatePagerAdapter将碎片提供给ViewPager。 如果用户以正常速度向左滑动,然后迅速向右滑动,则可以使ViewPager进入奇怪状态,显示多个碎片。 例如,如果用户在片段A上,然后以正常速度向左滑动到片段B,然后快速向右滑动以返回片段A,然后在屏幕上显示片段A和B. 任何人有什么想法,为什么这是发生或防止它的一个好办法? 以下是它的样子: 这是我在XML中的ViewPager定义: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.company.views.CustomActionBar android:id="@+id/customActionBar" android:layout_width="match_parent" android:layout_height="@dimen/height_actionbar" android:layout_alignParentTop="true"/> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/customActionBar"/> 另外,我logging了我的onPageChangeListener()的输出,注意到当ViewPager卡在视图之间时,报告一个positionOffset为0.这是ViewPager的值,当它从STATE_DRAGGING过渡到STATE_SETTLING到STATE_IDLE时,奇怪的状态: 状态= 0 prevState:2位置:1 positionOffset:0.0 状态= 1 prevState:0位置:1 positionOffset:0.0 state = 2 prevState:1 position:1 positionOffset:0.4069444 状态= 0 prevState:2位置:2 positionOffset:0.0 所以看起来好像ViewPager是把错误的位置报告给我的。 完整的示例代码活动和适配器: public class ActivityBagelProfileViewer extends CustomAbstractFragmentActivity implements CustomActionBarContract, ListenerProgress, ListenerSync { public static final […]

允许在一个片段中旋转/横向

我的应用程序有一个活动与FragmentPagerAdapter与四个片段(使用ViewPagerIndicator库)。 其中一个片段devise了单独的纵向和横向布局,其他三个片段不需要固定在纵向上。 我的想法是在清单中设置android:configChanges="orientation" ,并在所有片段的onResume()中调用getActivity().setRequestedScreenOrientation() ,在其中的三个片段中locking到SCREEN_ORIENTATION_PORTRAIT ,而在SCREEN_ORIENTATION_UNSPECIFIED需要允许旋转,但是这不起作用。 该应用程序保持肖像模式。 有没有办法做到这一点? 实际活动实际上并不是必要的,如果无论如何不允许片段改变方向而没有进行活动,但是我没有发现任何提及这一点的可能性。 如果活动旋转也是同样好,因为在横向方向上标签栏将被隐藏。

Android使用viewPager vs使用tabhost

在我的Android应用程序,我不得不使用一个标签布局 ,我想从以下scheme中select一个。 他们是 使用viewPager 使用tab host viewPager比tabhost什么优点。 哪一个更好。 而我的目标是Android 4.2 。 谢谢!

android:如何从Android支持库版本4添加图标/绘图到PagerTabStrip?

android:如何从Android支持库版本4添加图标/绘图到PagerTabStrip? 这是人们意识到PagerTabStrip的非常具体的问题,我无法find足够的任何地方的例子,它是某种新的(PagerTabStrip),所以我找不到足够的信息。

带有Recyclerview的ViewPager上的NullPointerException

我们的应用程序中有一个ViewPager和一个包含三个片段的FragmentPagerAdapter 。 其中两个片段由每个片段的Recyclerview组成。 第一页(没有ViewPager的片段)正确显示。 但是,当ViewPager尝试预载下一个页面(一个RecyclerView)时,应用程序因为NullPointerException而崩溃,并显示以下日志: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null object reference at android.support.v7.widget.RecyclerView.findMinMaxChildLayoutPositions(RecyclerView.java:2839) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2626) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3011) at android.view.View.layout(View.java:15684) at android.view.ViewGroup.layout(ViewGroup.java:4981) at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1626) at android.view.View.layout(View.java:15684) at android.view.ViewGroup.layout(ViewGroup.java:4981) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) at android.widget.FrameLayout.onLayout(FrameLayout.java:508) at android.view.View.layout(View.java:15684) at android.view.ViewGroup.layout(ViewGroup.java:4981) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15684) at android.view.ViewGroup.layout(ViewGroup.java:4981) at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1000) at […]

一个包含多个片段的页面的ViewPager“java.lang.IllegalArgumentException:没有findid为”

在我的小型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) at […]

Android PagerAdapter,获取当前位置

我想获得我的PagerAdapter的可见视图的当前位置 我没有看到像getPosition()这样明显的function,我想要一个。 我想在这个位置添加一个对象到它的数组列表中,但是我需要先知道它

FragmentManager IllegalStateException:没有主机

更新 :当我把nullcheks(片段!= null,getActivity()!= null)崩溃了,无论我能。 我的应用程序正在使用ViewPager (屏幕外限制5)与FragmentStatePagerAdapter与getSupportFragmentManager()初始化。 每个页面都有它自己的碎片和后台堆栈。 应用程序在启动时崩溃。 问题只出现在preLollipop设备和模拟器上。 使用最新的支持lbrary(也尝试24.0.0 – 相同的结果)Stacktrace: java.lang.IllegalStateException:android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1273)在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)android.support上没有主机.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:2138)at android.support.v4.app.Fragment.onCreate(Fragment.java:1254)at android.support.v4.app.Fragment.performCreate(Fragment.java :2062)at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1051)at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)at android.support.v4.app。 BackStackRecord.run(BackStackRecord.java:758)at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1632)at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:637)at android在android.support.v4.view.ViewPager.pop上的.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166) ulate(ViewPager.java:1237)在android.support.v4.view.ViewPager.populate(ViewPager.java:1085)在android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1611)在android.view .View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)at android.widget.LinearLayout.measureVertical( LinearLayout.java:695)在android.view.View.measure(View.java:16497)android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)android.widget.LinearLayout.onMeasure(LinearLayout.java:588) )android.widget.FrameLayout.onMeasure(FrameLayout.java:310)在android.widget android.widget.RelativeLayout.measureChildHorizo​​ntal(RelativeLayout.java:719)android.view.View.measure(View.java:16497) .RelativeLayout.onMeasure(RelativeLayout.java:455)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widge t.FrameLayout.onMeasure(FrameLayout.java:310)at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)at android.view.View.measure(View.java:16497)at android.view .ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins( (ViewGroup.java:5125)在android.view.View.measure(View.java:16497)android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)android.widget.FrameLayout.onMeasure(FrameLayout.java:310) )在android.widget.Lineout.measureChildChildChildChildChildChildChildVertical(LinearLayout.java:695)在android.widget.LinearLayout.onMeasure(LinearLayout.java:588)在android.view上的(LinearLayout.java:1404)在android.widget.LinearLayout.measureVertical .View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 在android.view.View.measure(View.java:16497)在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java)com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2291) :1912)at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1109)at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1291)at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)at […]