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

标签 android android-fragments android-intent

当我从一个 fragment 打开一个 Activity 时发生了这个错误。新 Activity 包含一个 viewPager,我认为错误是由新 Activity 引起的,因为当我阻止一段代码 (viewPager.setAdapter(adapter)) 时,错误消失,我可以看到新的 Activity 。所以我认为 Intent 不会造成任何问题。

这是我的 fragment 代码

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

新 Activity 主代码

    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)

提前致谢!

最佳答案

如果您在扩充布局时未在 Fragment 类的 onCreateView() 方法中设置 attachToRoot false,则可能会导致此异常。
如果为真(默认情况下为真),则表示“立即将 subview 添加到父 View ”
如果它设置为 false 那么它意味着“现在不将 subview 添加到父 View ” 立即将 fragment 添加到父级会导致此异常。

关于android.os.TransactionTooLargeException "viewPager.setAdapter(adapter)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36928307/

相关文章:

android - 如何在 Galaxy Tab 中使用 Intent 捕获视频?

android - 启动后使声音按钮停止

android - 如何设置两个布局的高度。?

android - invalidateOptionsMenu 在 fragment 中不起作用

android - FragmentPagerAdapter 错误地更新了页面?

启动 Intent 时未定义 Android Intent 构造函数

java - 如何根据条件从数据库中删除数据?

java - 升级React Native 0.61.5:Android停留在初始屏幕上

java - 将字符串从 Activity 传递到 fragment

java - 发送 Instagram 直接消息的 Intent