#android #java #android_fragment
Здравствуйте! В фрагменте (1) есть ListView, со списком юзеров. По нажатию на сотрудника, открывается другой фрагмент (2), с данными этого пользователя ID, Name, LastName. Как из фрагмента (1), передать в фрагмент (2) значения id, name, lastName?. Отправляю вот так: Fragment f = new EmployeeDetails(); Bundle bundle = new Bundle(); bundle.putString("ID", "123"); f.setArguments(bundle); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction ft = fragmentManager.beginTransaction(); ft.replace(R.id.content_frame, f); ft.commit(); Принимаю: etId.setText(getArguments().getString("ID")); //NULL POINTER EXCEPTION Bundle bundle = this.getArguments(); etId.setText(bundle.getString("ID"));
Ответы
Ответ 1
После создания фрагмента, вызовом метода setArguments() передайте ему Bundle с нужными данными. В самом фрагменте этот Bundle можно получить вызовом getArguments().Ответ 2
Null может быть, если Вы дважды создаете фрагмент, который вызываете. Я делаю так: Шаг 1: Во фрагменте источнике (откуда передавать): Тело какого-то onClick { YourFragmentClass yfc = new YourFragmentClass(); Bundle bundle = new Bundle(); bundle.putInt("tag", intInformation); yfc.setArguments(bundle); android.app.FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, yfc).commit(); } Если строку fragmentManager.beginTransaction().replace(R.id.content_frame, yfc).commit(); изменить на fragmentManager.beginTransaction().replace(R.id.content_frame, new YourFragmentClass()).commit(); то bundle будет всегда пустой - null. И все потому, что фрагмент создается заново и к нему не был прикреплен bundle. Шаг 2: Во фрагменте получателе (где получаем - YourFragmentClass): Bundle bundle = getArguments(); if (bundle != null) { Integer recieveInfo = bundle.getInt("tag"); }
Комментариев нет:
Отправить комментарий