Android视图寻呼机保留视图状态

Android视图寻呼机保留视图状态,android,android-viewpager,android-pageradapter,Android,Android Viewpager,Android Pageradapter,我使用android ViewPager浏览了大量的视图。每个视图都有一些UI元素,如EditText或单选按钮。当我前进了几次视图后返回时,我在单选按钮上所做的选择将丢失 如何实现视图寻呼机以保留我的选择/输入。下面是我如何声明我的PagerAdapter private class QuestionsSlidePagerAdapter extends FragmentStatePagerAdapter { public QuestionsSlidePagerAdapter(F

我使用android ViewPager浏览了大量的视图。每个视图都有一些UI元素,如EditText或单选按钮。当我前进了几次视图后返回时,我在单选按钮上所做的选择将丢失

如何实现视图寻呼机以保留我的选择/输入。下面是我如何声明我的PagerAdapter

private class QuestionsSlidePagerAdapter extends FragmentStatePagerAdapter {
        public QuestionsSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }
当我将setOffscreenPageLimit设置为大于1时,我将返回此崩溃日志

 java.lang.IllegalStateException: Recursive entry to
 executePendingTransactions at
 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1585) at
 android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) at
 android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163) at 
 android.support.v4.view.ViewPager.populate(ViewPager.java:1106) at android.support.v4.view.ViewPager.populate(ViewPager.java:952) at
 android.support.v4.view.ViewPager.setOffscreenPageLimit(ViewPager.java:733) at
 com.mobytz.handyman.postjob.QuestionsFragment.onActivityCreated(QuestionsFragment.java:116) at
 android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1970) at
 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1092) 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:145) at 
 android.app.ActivityThread.main(ActivityThread.java:6837) 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:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

谢谢。

您可以设置ViewPager的屏幕外页面限制,然后在导航到隐藏片段时,将不会重新创建这些片段。例如,如果您总共有六个选项卡,则可以将屏幕外限制设置为5

ViewPager viewPager = (ViewPager)findViewById(R.id.view_pager);
viewPager.setOffScreenPageLimit(5); 

您必须小心在内存中保留额外片段对性能的影响,但这应该为您指明正确的方向。

这与查看寻呼机无关。您只需要添加一些模型类/SharedReferences/contentProvider,它将保存每个片段的信息,并在Resume上加载,在onPause中保存

对于小型的可视传呼机,您可以使用

    int numberOfPagesOffScreen=2
    mViewPager = (ViewPager)findViewById(R.id.pager);
    mViewPager.setOffscreenPageLimit(numberOfPagesOffScreen);

但是我不会建议你在很多页面上使用它

谢谢。我已经试过了,但应用程序正在崩溃,请查看更新的问题谢谢。我已经尝试过了,但是应用程序正在崩溃,请查看更新的问题这可能是您正在寻找的:选项卡通常是片段中的片段,因此您必须使用getChildFragmentManager()来防止这种递归行为。