Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – View中的ViewPager在返回时会丢失内容大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用FragmentActivity实现tabhost,在第一个选项卡下我加载一个包含Viewpager和CirclePageInDicator的欢迎片段,我需要在WelcomeFragment的一侧加载4个视图

这是我的WelcomeFragment

public class WelcomeFragment extends Fragment
{
     PageAdapter mAdapter;
        ViewPager mPager;
        CirclePageInDicator mInDicator;
        List<Fragment> fragments;
    @Override
    public View onCreateView(Lay@R_618_9981@nflater inflater,ViewGroup container,Bundle savedInstanceStatE) {
        View view = inflater.inflate(R.layout.frag_welcome_layout,null);
        mPager=(ViewPager)view.findViewById(R.id.myViewPager);
        mInDicator=(CirclePageInDicator)view.findViewById(R.id.circlePageInDicator1);
        fragments=new ArrayList<Fragment>();
        return view;
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceStatE) {
        super.onActivityCreated(savedInstanceStatE);
        Fragment fragment;
        for(int i=0;i<4;i++)
        {
            fragment= Fragment.instantiate(getActivity(),TipsFragment.class.getName());
            fragments.add(fragment);
        }
            mAdapter = new PageAdapter(getFragmentManager(),fragments);
            mPager.setAdapter(mAdapter);
        mInDicator.setViewPager(mPager);
    }
}

这是我的页面适配器

public class PageAdapter extends FragmentPagerAdapter implements serializable{

    List<Fragment> fragments;
    public PageAdapter(FragmentManager fm,List<Fragment> frags) {
        super(fm);
        fragments = frags;

    }

    @Override
    public Fragment getItem(int arg0) {
        // TODO Auto-generated method stub
        return TipsFragment.newInstance(0,0);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 4;
    }

    @Override
    public void destroyItem(ViewGroup container,int position,Object object) {
        FragmentManager manager = ((Fragment) object).getFragmentManager();
        Fragmenttransaction trans = manager.begintransaction();
        trans.remove((Fragment) object);
        trans.commit();

        super.destroyItem(container,position,object);
    }

}

当我首先加载应用程序时,tabFragmentActivity成功加载,并且welcomeFragment中的viewpager工作正常,但是当我移动到第二个选项卡并再次返回第一个选项卡时,ViewPager无法成功加载.

我怎么解决呢?

根据建议,我使用了getChildFragmentManager但是app崩溃了
logcat中的错误

09-09 13:28:39.412: E/AndroidRuntime(3100): FATAL EXCEPTION: main
09-09 13:28:39.412: E/AndroidRuntime(3100): java.lang.IllegalStateException: No activity
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1091)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1877)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1492)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.BACkStackRecord.run(BACkStackRecord.java:682)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.os.Handler.handleCallBACk(Handler.java:725)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.os.Handler.dispatchmessage(Handler.java:92)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.os.Looper.loop(Looper.java:137)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at android.app.ActivityThread.main(ActivityThread.java:5041)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at java.lang.reflect.Method.invokeNative(Native Method)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at java.lang.reflect.Method.invoke(Method.java:511)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-09 13:28:39.412: E/AndroidRuntime(3100):     at dalvik.system.NativeStart.main(Native Method

)

解决方法

如果您在片段中使用ViewPager,则在创建新适配器时,应使用ChildFragmentManager:
getChildFragmentManager()

大佬总结

以上是大佬教程为你收集整理的android – View中的ViewPager在返回时会丢失内容全部内容,希望文章能够帮你解决android – View中的ViewPager在返回时会丢失内容所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。