我有扩展DialogFragment的CustomDialog类。我想从我的适配器获取 ArrayList。我有这个异常java.lang.NullPointerException:当我尝试运行时,尝试在空对象引用上调用虚拟方法'java.io.Serializable android.os.Bundle.getSerializable(java.lang.String('。
holder.choisirButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int positionselected = menuItem.getId();
Bundle bundle = new Bundle();
bundle.putSerializable("menuItemList", menuItemList);
bundle.putInt("positionselected", positionselected);
FragmentActivity activity = (FragmentActivity) (context);
FragmentManager fm = activity.getFragmentManager();
ComplementFragment alertDialog = new ComplementFragment();
alertDialog.show(fm, "fragment_alert");
}
});
public class ComplementFragment extends DialogFragment {
ArrayList<MenuItem> menuItemsList;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.custom_dialog_layout, container);
menuItemList = (ArrayList<MenuItem>) getArguments().getSerializable("menuItemList");
int selectedPosition = getArguments().getInt("positionselected");
MenuItem menuItem = menuItemList.get(selectedPosition);
return view;
}
}
在将数组放入捆绑包中时,您需要强制转换可序列化。您可以从此处查看答案。或者,您可以使用某个方法创建自定义对话框,并在该方法中将数组作为参数接收。从这里检查代码。尽管解决它的最佳方法是使用parceable。有关使用可包裹的详细信息,请参阅此处和此处。要使用包裹将数据传递到片段,请查看此答案。我希望我的回答对您有所帮助。