Как использовать методы setArguments() и getArguments() во Фрагментах?

У меня есть 2 фрагмента: (1) Frag1 (2) Frag2.

Frag1

bundl = new Bundle();
bundl.putStringArrayList("elist", eList);

Frag2 dv = new Frag2();
dv.setArguments(bundl);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.the_fragg,dv);
ft.show(getFragmentManager().findFragmentById(R.id.the_fragg)); 
ft.addToBackStack(null);
ft.commit();

Как получить эти данные в Frag2?

Ответ 1

У вас есть метод под названием getArguments(), который принадлежит классу Fragment.

Ответ 2

Просто вызовите getArguments() в свой метод Frag2 onCreateView():

public class Frag2 extends Fragment {

     public View onCreateView(LayoutInflater inflater,
         ViewGroup containerObject,
         Bundle savedInstanceState){
         //here is your arguments
         Bundle bundle=getArguments(); 

        //here is your list array 
        String[] myStrings=bundle.getStringArray("elist");   
     }
}

Ответ 3

Например: Добавить данные:

   Bundle bundle = new Bundle();
   bundle.putString("latitude", latitude);
   bundle.putString("longitude", longitude);
   bundle.putString("board_id", board_id);
   MapFragment mapFragment = new MapFragment();
   mapFragment.setArguments(bundle);

Например: Получить данные: -

String latitude =  getArguments().getString("latitude")

Ответ 4

для таких, как я, которые ищут объекты, отличные от примитивов, так как вы не можете создать параметризованный конструктор в своем фрагменте, просто добавьте в ваш фрагмент аксессуар сеттера, это всегда работает для меня.

Ответ 5

в Frag1:

Bundle b= new Bundle();

b.putStringArray("arrayname that use to retrive in frag2",StringArrayObject);

Frag2.setArguments(b);

в Frag2:

Bundle b=getArguments();

String [] stringArray=b.getStringArray("arrayname that passed in frag1");

- это просто.