3 回答
![?](http://img1.sycdn.imooc.com/533e4bd900011a1d02000200-100-100.jpg)
TA贡献1876条经验 获得超5个赞
该Fragment#getContext()
可为空。null
当您的片段与活动分离时,此方法返回。该应用程序崩溃是因为您在未附加片段的情况下创建了适配器,从而导致将其null
传递给构造函数。
showShipments
仅当片段附加到活动时才应调用该方法。有回调onAttach()
,onDetach()
这将帮助您检测状态。还isAdded()
返回一个布尔值,说明该片段是否已附加。选择对您来说方便的东西。
祝你好运!
![?](http://img1.sycdn.imooc.com/5859e2d50001f6bb01000100-100-100.jpg)
TA贡献1818条经验 获得超7个赞
看起来您fetchShipments();
在返回片段布局视图(myView)之前正在调用,因此在实例化适配器时它为null。
尝试:
移动fetchShipments();
从onCreateView(),并将其放置在的onResume()或覆盖在onStart()和调用它有
![?](http://img1.sycdn.imooc.com/533e50ed0001cc5b02000200-100-100.jpg)
TA贡献1864条经验 获得超6个赞
您可以在适配器设置过程中检查是否为null以避免这种情况。在Fragment中,有时getActivity可以在Fragment生命周期的不同时间返回null。例如,在showShipments
Activity a = getActivity();
if( a == null || a.isFinishing() ) {
// Not in a valid state to show things anyway, so just stop and exit
return;
}
ShipmentsAdaptor adaptor = new ShipmentsAdaptor(savedShipments, a);
您还可以检查isAdded(),如果为false,则可以从中获取null getActivity()。
另外,请考虑将呼叫fetchShipments()从onCreateView转移到onActivityCreated。
添加回答
举报