Ответ 1
У вас есть метод под названием getArguments()
, который принадлежит классу Fragment
.
У меня есть 2 фрагмента: (1) Frag1 (2) Frag2.
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?
У вас есть метод под названием getArguments()
, который принадлежит классу Fragment
.
Просто вызовите 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");
}
}
Например: Добавить данные:
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")
для таких, как я, которые ищут объекты, отличные от примитивов, так как вы не можете создать параметризованный конструктор в своем фрагменте, просто добавьте в ваш фрагмент аксессуар сеттера, это всегда работает для меня.
в 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");
- это просто.