java - 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,但不知道它为什么会崩溃。让我知道是否有人可以帮助我解决问题。谢谢!
解决方案
您有一个 IndexOutOfBoundsException。您的数组大小为 1,唯一可用的索引为 0,而不是 1。按照堆栈跟踪到 ArrayList.java 中的第 438 行或 MainActivity.java 中的第 225 行。检查索引值,例如 getSupportFragmentManager().getBackStackEntryCount() 的返回值。
推荐阅读
- verilog - 如何理解 Cadence XMVLOG 编译器支持哪个 SystemVerilog?
- django - 使用 gmail 作为客户端(django、石墨烯)发送电子邮件失败
- c# - 如何获取wopi主机集成的file_id?
- highcharts - 如何在 xAxis 格式化程序上放置 highcharts 符号?
- mongodb - 检查 mongodb 连接字符串在 asp.net 核心中是否有效
- python - Python - 请求 - POST 有效负载
- reactjs - 启动使用 create-react-app 引导的反应应用程序时出错
- python - 在 Python 中解析非零填充的 12 小时日期时间格式
- typescript - Vue.js:$attrs 是只读的,$listeners 是只读的
- java - 在 BroadcastReceiver(多边形地理围栏)中使用 containsLocation