zoukankan      html  css  js  c++  java
  • 【Android】 java.lang.IllegalStateException: Recursive entry to executePendingTransactions

    在Fragment里面添加Viewpager,Viewpager由多个Fragment组成

    "引——没有拼命的干劲,怎能有精彩的结果!"

    java.lang.IllegalStateException: Recursive entry to executePendingTransactions
    找到发送错误的地方是viewpager.setAdapter()处。

    我的应用场景是: 嵌套使用Fragment使用,最外层使用了一个第三方的库,里面使用FragmentActivity,每个Fragment中又使用ViewPager再嵌套Fragment

    解决方法:嵌套Fragment设置PageAdapter时要使用getChildFragmentManager。

    New version of Support Library v4 (or Android 4.2, ofcourse) resolve this problem much simply. For do this, simply do constructor of your custom FragmentPagerAdapter like this:

    public CustomFragmentPagerAdapter(android.support.v4.app.Fragment fragment)
    {
        super(fragment.getChildFragmentManager());
        // write your code here
    }

    This work because new Android version approve using nested Fragments

    我这里没有修改CustomFragmentPagerAdapter,而是新建CustomFragmentPagerAdapter对象时使用参数改为this.getChildFragmentManager();

    adapter = new TabPageIndicatorAdapter(this.getChildFragmentManager()); 
    
    TabPageIndicatorAdapter类内容不变:
     /**
    	 * ViewPager
    	 * @author liwenjin
    	 *
    	 */
        class TabPageIndicatorAdapter extends FragmentPagerAdapter {
           
        	public TabPageIndicatorAdapter(FragmentManager  fm) {
                super(fm);
                
            }
    
            @Override
            public Fragment getItem(int position) {
                Fragment fragment = new ItemFragment();  
                Bundle args = new Bundle();  
                args.putString("arg", TITLE[position]);  
                fragment.setArguments(args);  
                return fragment;
            }
    
            @Override
            public CharSequence getPageTitle(int position) {
                return TITLE[position % TITLE.length];
            }
    
            @Override
            public int getCount() {
                return TITLE.length;
            }
        }

    This is an article reprinted!
  • 相关阅读:
    How to set up a Headless Chrome Node.js server in Docker
    ozone chromium headless
    编译 chromium 的老版本
    chrome单元测试 单独编译 chromium的Gtest
    HTTP协议header中Content-Disposition中文文件名乱码
    windows 10 cmd 窗口 不支持中文 中文乱码 默认gbk 需要改为utf8 临时修改:CHCP 65001
    ubuntu查看core dumped的详细错误原因
    Ubuntu18.04 图形界面 切换 命令行
    Headless Chromium
    添加chromium mojom调用
  • 原文地址:https://www.cnblogs.com/Lt-Java13/p/4402526.html
Copyright © 2011-2022 走看看