почему я получаю нулевое значение во фрагменте, используя расслоение - PullRequest
1 голос
/ 17 мая 2019

Я использую пакет для передачи данных между fragment, с отправителем все в порядке, но при получении я получаю null значение в комплекте.

Я перепробовал все, и я не получаюЯ не нашел ни одной ошибки, но все еще не получил Я попробовал все возможные решения.Пожалуйста, дайте мне знать, в чем я здесь ошибаюсь.

В первом фрагменте я отправляю данные типа объекта и данные типа int.

FirsrtFragment.java

       lay_upcoming.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            bundle = new Bundle();
            eventFragment = new EventFragment();
            bundle.putInt("img_id", img_id2);
            eventFragment.setArguments(bundle);

            getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up).addToBackStack(null).replace(R.id.fragment_container, new EventFragment()).commit();
        }
    });

Это Мой Второй Фрагмент.java

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    intiView();

    View v = inflater.inflate(R.layout.event_detail_fragment, container, false);
    bundle = getArguments();
    if (bundle != null) {
        img_id = getArguments().getInt("img_id");

    } else {
        Toast.makeText(getContext(), "Bundle is Null", Toast.LENGTH_SHORT).show();
    }
    ButterKnife.bind(this, v);
    return v;
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Вы создаете новый фрагмент вместо того, который вы уже создали и передали аргументы: replace(R.id.fragment_container, new EventFragment()).

Просто используйте eventFragment, который вы уже создали: replace(R.id.fragment_container, eventFragment).

0 голосов
/ 17 мая 2019

Вам нужно передать фрагмент, где вы установили комплект. Но вы используете новый фрагмент. Измените код, как показано ниже

lay_upcoming.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        bundle = new Bundle();
        eventFragment = new EventFragment();
        bundle.putSerializable("Data", (Serializable) data2);
        Log.i("DAta", String.valueOf(img_id2));
        Log.i("DAta", String.valueOf(img_id2));
        bundle.putInt("img_id", img_id2);
        eventFragment.setArguments(bungetFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up).addToBackStack(null).replace(R.id.fragment_container, eventFragment).commit(); // change new EventFragment() to eventFragment
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...