【发布时间】:2019-03-13 09:51:16
【问题描述】:
当我将数据发送到初始化选项卡时出现问题。在getData() 方法中,我收到的适配器为空,recyclerview 也为空。
TabOne one = new TabOne()
one.getData(populatedList)
错误是下一个=>
java.lang.NullPointerException: Attempt to invoke virtual method 'void OneAdapter.setData(java.util.List)' on a null object reference.
也许更好的办法是通过在片段中的捆绑发送数据或任何其他想法。
我打电话给getData(),因为这里是来自 API 的响应。
public class TabOne extends Fragment {
private Unbinder unbinder;
@BindView(R.id.fab)
FloatingActionButton floatingActionButton;
@BindView(R.id.recycler_view_recycler)
RecyclerView recyclerView;
private OneAdapter oneAdapter;
private List<Response> response = new ArrayList<>();
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab_one, container, false);
unbinder = ButterKnife.bind(this, view);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
oneAdapter = new OneAdapter(getContext(), response);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(oneAdapter);
return view;
}
public void getData(List<Response> response){
oneAdapter.setData(response);
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
【问题讨论】:
-
使用 bundle 进行通信。
-
捆绑是首选方式,但又取决于用例
-
你在哪里调用 one.getData(populatedList) ?如果您从另一个活动或片段中调用它,那么您做错了
-
是的,我从另一个片段 @Radesh 中调用它。最好的方法是什么?
标签: java android android-fragments android-viewpager android-tablayout