Android: передача данных между фрагментами в viewpager

В моем проекте я использую панель действий с просмотром пейджера и имею три вкладки, которые являются фрагментами, есть еще один четвертый фрагмент, когда я нажимаю кнопку в первом фрагменте, я заменяю ее четвертым фрагментом, теперь здесь, где я сталкиваюсь с проблемой, когда я щелкните элемент списка четвертого фрагмента, мне нужно передать данные списка на первую вкладку (первый фрагмент) и отобразить его. Я использую Bundle для отправки данных, как в моем четвертом фрагменте ниже.

public class PlaceSearchFragment extends Fragment {

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

        View rootView = inflater.inflate(R.layout.autosearchactivity, container, false);

        return rootView;
    }

    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);


        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parentView, View view, int position,
                    long arg3) {

                int product =lv.getId();
                Bundle bundle = new Bundle();
                bundle.putInt("y", product); //any string to be sent
                System.out.println("Bundle loaded  "+product);
                Fragment newFragment = new GetRideFragment();
                newFragment.setArguments(bundle);

                          Fragment productDetailFragment = new GetRideFragment();
                  FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
                 transaction.remove(PlaceSearchFragment.this);
                  transaction.replace(R.id.replaceautosearch, productDetailFragment,"yourfragment").commit();   

}           
});     
}

И в моем первом фрагменте я вызываю пакет, как показано ниже.

public class Myplace extends Fragment {

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

        View rootView = inflater.inflate(R.layout.autosearchactivity, container, false);

        return rootView;
    }

    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

  if ( b != null ){
            b = getArguments();
            int s = b.getInt("y");
            System.out.println("printinf bundle data==>"+s);
            getfrom.setText(""+s);
}}

Любая помощь приветствуется.


person teekib    schedule 21.02.2014    source источник
comment
Связь фрагмента с фрагментом может быть выполнена через связанную активность   -  person Raghunandan    schedule 21.02.2014
comment
@Raghunandan, привет, можешь привести рабочий пример, что я делаю не так?   -  person teekib    schedule 21.02.2014
comment
привет, проверьте это stackoverflow.com/questions/18492791/   -  person Mohan    schedule 21.02.2014
comment
@mohan, спасибо, мохан   -  person teekib    schedule 21.02.2014
comment
Решается с помощью интерфейсов   -  person teekib    schedule 21.02.2014
comment
@Raghunandan: Можем ли мы передавать данные между двумя фрагментами без активности? У меня есть родительский фрагмент, в котором есть два дочерних фрагмента, и мне нужно передать данные между двумя дочерними фрагментами.   -  person Siddharth_Vyas    schedule 15.12.2014
comment
@SiddharthVyas использует шину событий от зеленых роботов   -  person Raghunandan    schedule 15.12.2014
comment
@Raghunandan: Спасибо ... У вас есть какой-нибудь рабочий пример ... Я просмотрел сайт github, но не получил четкого понимания этого.   -  person Siddharth_Vyas    schedule 15.12.2014
comment
@SiddharthVyas, я думаю, у них есть образцы на github. У меня пока нет примера кода   -  person Raghunandan    schedule 15.12.2014


Ответы (1)


Просто используйте конструктор фрагментов

private int value;

public MyFragment(int value) {
    this.value=value;
}

и назовите этот фрагмент так

MyFragment fragment = new MyFragment(25);
FragmentManager fragmentManager = activity.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
person Vinil Chandran    schedule 03.12.2014