android.os.TransactionTooLargeException" viewPager.setAdapter(adapter)"

时间:2016-04-29 01:56:12

标签: android android-fragments android-intent

当我从片段中打开活动时发生此错误。新活动包含viewPager,我认为错误是由新活动引起的,因为当我阻止一段代码(viewPager.setAdapter(adapter))时,错误消失,我可以看到新活动。所以我认为意图没有问题。

这是我的片段代码

getActivity().startActivity(new  Intent(getActivity(),five_oder.class));

新活动主要代码

    viewPager= (ViewPager) findViewById(R.id.oder_viewPafer);
     tb= (PagerTabStrip) findViewById(R.id.order_tab);
     TitleList = new ArrayList<String>();
     fragmentList = new ArrayList<Fragment>();
     TitleList.add("已完成订单");
     TitleList.add("未完成订单");
     fragmentList.add(new fragment_oder1());
     fragmentList.add(new fragment_oder2());
     MyFragmentAdapter adapter=new  MyFragmentAdapter(getSupportFragmentManager(),fragmentList,TitleList);
    viewPager.setAdapter(adapter);

适配器代码

public class MyFragmentAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList= new ArrayList<Fragment>();
private List<String> stringList=new ArrayList<String>();
public MyFragmentAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> stringList) {
    super(fm);
    this.fragmentList=fragmentList;
    this.stringList =stringList;
    Log.i("CHONG","MyFragmentAdapter construct");
}

@Override
public Fragment getItem(int position) {
    Log.i("CHONG"," getItem");
    return fragmentList.get(position);
}

@Override
public int getCount() {
    Log.i("CHONG"," getItem");
    return fragmentList.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return stringList.get(position);
}

}

错误日志:

04-29 09:17:33.651 11798-11798/com.example.administrator.buyer E/JavaBinder:

    !!! FAILED BINDER TRANSACTION !!!

04-29 09:17:33.661 11798-11798/com.example.administrator.buyer                     E/AndroidRuntime: Error reporting crash
04-29 09:17:33.661 11798-11798/com.example.administrator.buyer E/AndroidRuntime: android.os.TransactionTooLargeException
04-29 09:17:33.661 11798-11798/com.example.administrator.buyer E/AndroidRuntime:     at android.os.BinderProxy.transactNative(Native Method)
04-29 09:17:33.661 11798-11798/com.example.administrator.buyer E/AndroidRuntime:     at android.os.BinderProxy.transact(Binder.java:496)
04-29 09:17:33.661 11798-11798/com.example.administrator.buyer E/AndroidRuntime:     at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:4124)

04-29 09:17:33.661 11798-11798/com.example.administrator.buyer E/AndroidRuntime:     at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:89)
04-29 09:17:33.661 11798-11798/com.example.administrator.buyer E/AndroidRuntime:     at com.loc.ai.uncaughtException(DynamicExceptionHandler.java:86)
04-29 09:17:33.661 11798-11798/com.example.administrator.buyer E/AndroidRuntime:     at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
04-29 09:17:33.661 11798-11798/com.example.administrator.buyer E/AndroidRuntime:     at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)

提前致谢!!

3 个答案:

答案 0 :(得分:1)

当您在扩充布局时未在Fragment类的onCreateView()方法中设置attachToRoot false时,可能会导致此异常。
如果它默认为true,则表示“将子视图添加到父级RIGHT” 如果设置为false,则表示“将子视图添加到父级NOT NOW” 立即将片段添加到父级会导致此异常。

答案 1 :(得分:0)

我认为主要问题是片段中的图像大小太大,因此查看片段的事务无法完成,但是可以通过单独加载图像来修复,可以使用名为Picasso的库来加载使用本地/远程资源将图像放入图像视图中 http://square.github.io/picasso/ 例如 Picasso.with(上下文).load(&#34;文件:///android_asset/DvpvklR.png").into(imageView2);

问题的参考: What to do on TransactionTooLargeException

答案 2 :(得分:0)

尝试清除旧的已保存实例

webpack.config.js

或以其他方式为片段充气时,您可能会丢失最后一个项目。

 @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.clear();
    }

->缺少最后一个元素?在其中添加false。