TextView prefer = layoutTab.findViewById(R.id.prefer); prefer.setText(bnRoutePlanItem.getPusLabelName()); TextView time = layoutTab.findViewById(R.id.time); time.setText(getString(R.string.route_result_pass_time, (int) bnRoutePlanItem.getPassTime() / 60)); TextView distance = layoutTab.findViewById(R.id.distance); distance.setText(getString(R.string.route_result_distance_text, (int) bnRoutePlanItem.getLength() / 1000)); TextView trafficLight = layoutTab.findViewById(R.id.traffic_light); trafficLight.setText(String.valueOf(bnRoutePlanItem.getLights())); 报错 java.lang.IllegalStateException: Fragment RouteResultFragment{f466a91} not attached to a context.
时间: 2024-03-17 10:45:37 浏览: 107
TextView的使用
4星 · 用户满意度95%
这个错误通常是因为在 Fragment 销毁时,AsyncTask 等后台任务仍在执行,而在后台任务完成后再试图更新 Fragment 的 UI,导致出现此错误。在此情况下,你可以在 Fragment 的 onDestroyView() 方法中取消 AsyncTask,例如:
```
@Override
public void onDestroyView() {
super.onDestroyView();
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING) {
mTask.cancel(true);
}
}
```
另外,你也可以将更新 UI 的代码放在 Fragment 可见时才执行,例如在 onResume() 方法中执行。
阅读全文