Articles of fragmentstatepageradapter

在ViewPager中仅加载一个片段

我使用了ViewPager和Fragment 。 但它每次加载两页。 有没有办法只在viewpager中加载一个页面?

在ViewPager中滑动方向

我有一个使用ViewPager和FragmentStatePagerAdapter的Android应用程序。 然而,我需要添加一个新function,我必须知道滑动方向从一个片段视图移动到另一个,左或右。 (也就是说,当我向左滑动时,我会做一件事,当我向右滑动时,我会做其他事情)。 请注意,我不需要在滑动结束后发生事件。 滑动发生时我必须做这些事件。 我想过使用setOnPageChangeListener()但它并没有告诉我滑动方向。 你能告诉我如何找出滑动方向吗? 谢谢。

更改屏幕方向后,从ViewPager的适配器中销毁项目

所以我在屏幕方向改变后从ViewPager销毁(删除)一个页面时遇到问题。 我将尝试在以下几行中描述问题。 我正在使用FragmentStatePagerAdapter作为ViewPager的适配器和一个小接口,它描述了无限视图寻呼机应该如何工作。 它背后的想法是你可以滚动到右边,直到你到达ViewPager 。 如果您可以从API调用加载更多结果,则会显示进度页面,直到结果出现。 一切都很好,直到这里,现在问题来了。 如果在这个加载过程中,我旋转屏幕(这不会影响API调用,这基本上是一个AsyncTask ),当调用返回时,应用程序崩溃给我这个exception: E/AndroidRuntime(13471): java.lang.IllegalStateException: Fragment ProgressFragment{42b08548} is not currently in the FragmentManager E/AndroidRuntime(13471): at android.support.v4.app.FragmentManagerImpl.saveFragmentInstanceState(FragmentManager.java:573) E/AndroidRuntime(13471): at android.support.v4.app.FragmentStatePagerAdapter.destroyItem(FragmentStatePagerAdapter.java:136) E/AndroidRuntime(13471): at mypackage.OutterFragment$PagedSingleDataAdapter.destroyItem(OutterFragment.java:609) 在库的代码中挖掘了一下之后,在这种情况下,片段的mIndex数据字段似乎小于0 ,这就引发了exception。 以下是寻呼机适配器的代码: static class PagedSingleDataAdapter extends FragmentStatePagerAdapter implements IEndlessPagerAdapter { private WeakReference fragment; private List data; private SparseArray<WeakReference> currentFragments = new SparseArray<WeakReference>(); private ProgressFragment progressElement; private […]

来自FragmentStatePagerAdapter的getResources

在一个activity类中,我有这个类(来自android样本): public static class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter { public DemoCollectionPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { Fragment fragment = new QuestionFragment(); Bundle args = new Bundle(); args.putInt(QuestionFragment.ARG_OBJECT, i ); fragment.setArguments(args); return fragment; } @Override public int getCount() { return questionList.length; } @Override public CharSequence getPageTitle(int position) { return "Title n°" + […]

FragmentStatePagerAdapter内存泄漏(与viewpager嵌套的片段)

我在我的适配器中有一个“内存泄漏”(引号将在后面解释)。 我目前使用嵌套的片段来承载一个viewpager。 我的设置如下: 1.活动(主pipe片段A的空活动) 2.片段A – 使用Fragmentstatepageradapter托pipeviewpager的片段。 每个viewpager页面主持片段B. 3.片段B – 包含imageview的片段。 除非发生configuration更改,否则一切都很好。 监控堆,每发生一次旋转,似乎就会增长100 kb。 手动GCing不释放内存。 我试过的东西: 1.用空片段replace片段B – 同样的问题发生,所以它不是造成问题的imageview。 2.删除片段A和B并旋转活动。 没有发生内存泄漏,所以它不是活动。 3.在任何方向改变之前和旋转约50次之后使用MAT来堆起来。 MAT显示了1个主要的嫌疑犯,这是我的适配器类。 它显示了7MB的观察者留下的堆(非常小的浅堆)如此: array java.util.ArrayList @ 0x42079938 24 7,000,832 .\mObservers android.database.DataSetObservable @ 0x42053508 16 7,000,848 ..\mObservable com.example.main.Adapter@ 0x4205a048 40 7,001,416 为什么我在片段中使用viewpager: 1.通过设置setretaininstance(true),我想保持与viewpager相关的适配器和其他variables的状态。 2.更改configuration后,我不重新创build适配器,而是使用旧的适配器连接到viewpager。 3.如果我不重复使用旧的适配器,而是在更改configuration后创build新的适配器,则内存泄漏消失。 4.closures活动并返回上一个活动后,内存泄漏也消失。 有任何想法吗? 将不胜感激任何帮助。 谢谢,JC

删除由FragmentStatePagerAdapter填充的ViewPager中的所有片段

我有一个ViewPager,我使用FragmentStatePagerAdapter填充碎片(表示来自arrayListOfObjects的对象)。 一切运作良好: mMyFragmentPagerAdapter = new fragmentAdapter(getSupportFragmentManager(),orientation ,rePopulatedfireInfoList); mPager = (ViewPager)findViewById(R.id.fireInfoFragment_container); initButton(); setTab(); mPager.setAdapter(mMyFragmentPagerAdapter); 片段适配器扩展FragmentStatePagerAdapter。 从主要活动中,我发起了一个对话主题活动; 用户可以添加一个新的最爱位置,创build一个新的对象,改变主要活动传递的对象的数组列表。 这是开始对话框活动的代码; 一切工作正常: Intent locationIntent = new Intent(afisController.this, locationActivity.class); locationIntent.putExtra("firesList", new fireInfoListWrapper(arrayListOfObjects)); startActivityForResult(locationIntent,1); 浮动活动将对象添加到arrayListOfObjects中。 在主要活动的onActivityResult上,我比较了正在接收的arraListOfObjects和我发送的arraListOfObjects; 如果不同,我想完全删除viewPager的内容,并用新的arrayListOfObjects重新创build它。 这是onActivityResults: protected void onActivityResult(int requestCode, int resultCode, Intent data) { Toast.makeText(this, "Activity Results fired…" , 1500 ).show(); if ((resultCode == 0) && (data != […]

Android:ViewPager FragmentStatePagerAdapter获取当前视图

问 :如何获取ViewPager FragmentStatePagerAdapter的当前视图? 我花了将近24小时的时间在这个地方search适合的解决scheme。 获得现在的位置很简单,我已经知道了。 这是获取当前视图 。 FragmentStatePagerAdapter是必需的,而不是PagerAdapter 。 此解决scheme通过instantiateItem(View container, int position)build议setTag和findViewWithTag 。 这是为PagerAdapter。 但是在FragmentStatePagerAdapter , instantiateItem的ViewGroup参数不是 View param: instantiateItem(**ViewGroup** container, int position) 所以我希望这不是不可能的,是吗? 请帮忙!

显示的ViewPager第一个片段总是与FragmentStatePager错误

我正在尝试与PlayStore 5.1.x具有相同的view pager + tabsdevise。 这是我的布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_vertical|center_horizontal" android:gravity="center_vertical|center_horizontal" android:orientation="vertical"> <com.astuetz.PagerSlidingTabStrip android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="50dp" android:background="@drawable/background_tabs" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> 我的适配器: public class MainPagerAdapter extends FragmentStatePagerAdapter { private ArrayList<FakeFragment> fragments; public MainPagerAdapter(FragmentManager fm) { super(fm); // TODO Auto-generated constructor stub fragments = new ArrayList<FakeFragment>(); } @Override public […]

Android setUserVisibleHint永远不会被调用?

我需要知道什么时候我的片段可见,我正在使用setMenuVisibility,但我现在知道这不是一个好的select。 我试图在FragmentStatePagerAdapter片段上实现setUserVisibleHint,但它永远不会被调用。 import android.app.Fragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; public class Contacts extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); View view = inflater.inflate(R.layout.fragment_screen_contacts, container, false); return view; } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); Log.d("MyFragment", "This never shows up."); Toast.makeText(getActivity(), […]

碎片getView()总是返回null由FragmentStatePagerAdapter创build的碎片

我一直在阅读很多有关片段的内容。 发现其他人有问题检索片段视图,因为空总是返回,但没有答案解决我的问题。 我想要做的是创build一个图片库。 我有一个保存图像视图的片段。 为了显示片段,我使用了android.support.v4.view.ViewPager。 为了提供ViewPager我使用了一个android.support.v4.app.FragmentStatePagerAdapter 。 问题是,当一切都build立和图像显示,我想保存当前显示的图像到磁盘。 所以我需要得到当前片段imageview,但我不能因为fragment.getView()总是为空,与片段相关的活动也是空的,我不明白为什么。 这里有一些代码,看看有没有人可以帮忙: 这是我的片段: public class ImageViewURLFragment extends Fragment { String _url; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // The last two arguments ensure LayoutParams are inflated // properly. View rootView = new ImageViewURL(getActivity(), _url); return rootView; } public void setImageURL(String imgURL) { _url=imgURL; […]