首页 > 解决方案 > java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 on backpressed fragment

问题描述

我的 MainActivity 中有如下代码

if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
    String title = getSupportFragmentManager().getFragments().get(getSupportFragmentManager().getBackStackEntryCount() - 1).getTag();
    if (title != null) {
        method.ShowFullScreen(false);
        toolbar.setTitle(title);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        getWindow().clearFlags(1024);
    }
    super.onBackPressed();
}

在我的片段中,我将从类别片段转到搜索片段,如下所示

SearchFragment searchFragment = new SearchFragment();
            Bundle bundle = new Bundle();
            bundle.putString("search_menu", tag);
            bundle.putString("typeLayout", "Landscape");
            searchFragment.setArguments(bundle);
            Objects.requireNonNull(getActivity()).getSupportFragmentManager()
                    .beginTransaction().replace(R.id.frameLayout_main, searchFragment, tag).addToBackStack(category_name).commitAllowingStateLoss();

现在,当从搜索片段返回时,我收到如下错误

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
        at java.util.ArrayList.get(ArrayList.java:437)
        at com.example.myapp.Activity.MainActivity.onBackPressed(MainActivity.java:225)

我正在学习 android,但不知道它为什么会崩溃。让我知道是否有人可以帮助我解决问题。谢谢!

标签: javaandroidandroid-fragments

解决方案


您有一个 IndexOutOfBoundsException。您的数组大小为 1,唯一可用的索引为 0,而不是 1。按照堆栈跟踪到 ArrayList.java 中的第 438 行或 MainActivity.java 中的第 225 行。检查索引值,例如 getSupportFragmentManager().getBackStackEntryCount() 的返回值。


推荐阅读