【问题标题】:Passing data(ArrayList and Int) from Adapter to AlertDialog将数据(ArrayList 和 Int)从 Adapter 传递到 AlertDialog
【发布时间】:2018-06-13 07:07:42
【问题描述】:

我有扩展 DialogFragment 的 CustomDialog 类。我想从我的适配器中获取 ArrayList。我有这个异常 java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.os.Bundle.getSerializable(java.lang.String)' on an null object reference when I try to run.

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;
    }
}

【问题讨论】:

    标签: android serializable dialogfragment


    【解决方案1】:

    很多人需要在将数组放入捆绑包时强制转换可序列化。您可以查看here 的答案。或者,您可以使用一种方法来创建自定义对话框并在该方法中接收数组作为参数。检查来自here 的代码。尽管解决它的最佳方法是使用 parceable。有关使用 parcelable 的详细信息,请参阅 herehere。要使用 parcelable 将数据传递给片段,请查看 this 答案。希望我的回答对你有帮助。

    【讨论】:

      猜你喜欢
      • 2015-01-15
      • 2022-08-24
      • 2017-12-02
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      相关资源
      最近更新 更多