android-fragments - 如何先获取 Intent 然后只创建一个片段?
问题描述
在我的 onCreate 方法的一项活动中,我将 ArrayList 从意图传递到片段以创建片段。但是,我意识到它会抛出空指针异常,因为片段可能在接收意图之前创建?我应该如何解决这个问题?在我的 onCreate 方法中。
monitor_list= this.getIntent().getParcelableArrayListExtra("monitorList");
cholesterol_monitor = (ArrayList<CholesterolMonitor>) monitor_list;
monitorListFragment = MonitorListFragment.newInstance(cholesterol_monitor);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_monitor_layout, monitorListFragment)
.commit();
解决方案
首先检查 monitor_list 是否不为空,然后检查是否不替换片段
ArrayList<CholesterolMonitor> monitor_list= this.getIntent().getParcelableArrayListExtra("monitorList");
if (monitor_list.size()>0){
cholesterol_monitor = (ArrayList<CholesterolMonitor>) monitor_list;
monitorListFragment = MonitorListFragment.newInstance(cholesterol_monitor);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_monitor_layout, monitorListFragment)
.commit();
}else // list is null
推荐阅读
- javascript - 如何在 D3.js 中显示触摸事件的文本?
- angular - 将函数的返回类型设为打字稿中的任何枚举
- mysql - 具有相关子查询 mySql 的最小值
- javascript - 如何对 Google Ads 进行 api 调用
- android - Mapbox:空闲几分钟后得到 ANR
- excel - 关闭用户窗体时需要关闭 Excel
- maven - 在 Maven 中执行依赖项中定义的构建插件
- php - 如何修复 laravel 中 ixudra/curl 中的错误且响应不正确
- typescript - Loopback 4 控制器 省略
- c# - 事件 KeyDown/KeyPress/KeyUp 如何获取按下按钮的名称?