Передача данных (ArrayList и Int) из адаптера в AlertDialog

У меня есть класс CustomDialog, который расширяет DialogFragment. Я хочу получить 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;
    }
}

person Community    schedule 03.01.2018    source источник


Ответы (1)


Многим нужно привести сериализуемый объект при помещении массива в пакет. Вы можете проверить ответы на здесь. ИЛИ вы можете использовать метод для создания пользовательского диалога и получения массива в качестве параметра в этом методе. Проверьте код из здесь. Хотя лучший способ ее решения — использование parceable. Подробную информацию об использовании посылки можно найти на здесь и здесь. Чтобы использовать посылки для передачи данных во фрагменты, проверьте этот ответ. Я надеюсь, что мой ответ будет полезен.

person Imtiaz Abir    schedule 03.01.2018