0

I want to create a sign up form where the form has been divided into three fragments.There is a next button in the fragment which causes the viewpager to move to the next fragment.But i want to pass values between the fragments how do i do that?

The main class:

package pl.looksok.viewpagerdemo;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class MainActivity extends FragmentActivity {
    ViewPager pager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyPagerAdapter pageAdapter = new MyPagerAdapter(getSupportFragmentManager());
         pager = (ViewPager)findViewById(R.id.myViewPager);
        pager.setAdapter(pageAdapter);



    }
    public void selectFragment(int position){
    pager.setCurrentItem(position, true); 
    // true is to animate the transaction
    }
}

The first fragment:

package pl.looksok.viewpagerdemo;

import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

public class FragmentBlue extends Fragment {
Button btnnext1;
RelativeLayout frag1;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_blue, container, false);
        btnnext1=(Button) view.findViewById(R.id.btnnext1);
        frag1=(RelativeLayout) view.findViewById(R.id.frag1);

        btnnext1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {


                ((MainActivity)getActivity()).selectFragment(1);
            }
        });

        return view;
    }
}

The second fragment:

package pl.looksok.viewpagerdemo;

import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

public class FragmentGreen extends Fragment {
Button btnnext2;
RelativeLayout frag2;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_green, container, false);
        btnnext2=(Button) view.findViewById(R.id.btnnext2);
        frag2=(RelativeLayout) view.findViewById(R.id.frag2);
        btnnext2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {


                ((MainActivity)getActivity()).selectFragment(2);

            }
        });
        return view;
    }
}

The third fragment:

package pl.looksok.viewpagerdemo;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.support.v4.app.Fragment;

public class FragmentPink extends Fragment {
Button btnnext3;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_pink, container, false);
        btnnext3=(Button) view.findViewById(R.id.btnnext3);
        btnnext3.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


            }
        });
        return view;
    }
}

I would place a submit button in the last fragment which would post data to the server,So the data in the first two fragments should be available in the last fragment.So i want to know how to pass data from the first two fragments to the last one?

Also is my approach a bad way of achieving the task?Would i be better of creating three different activities and using intent and bundle to pass data?

Achuthan M
  • 349
  • 1
  • 4
  • 17
  • try this http://stackoverflow.com/questions/13700798/basic-communication-between-two-fragments and to understand better try this http://www.youtube.com/watch?v=VyyGP_d0Ia8&list=PLonJJ3BVjZW4lMlpHgL7UNQSGMERcDzHo&index=8 – Piyush Kukadiya Sep 23 '14 at 06:21

1 Answers1

0

You can use SharedPreferences. Before you change the fragment save entered values:

SharedPreferences sp = getSharedPreferences("pref_name", MODE_PRIVATE);
SharedPreferences.Editor editor = mSharedPref.edit();
editor.putString("key", value);
editor.commit();

And in other fragment when you want to use saved value:

SharedPreferences sp = getSharedPreferences(MainActivity.PREF_NAME, MODE_PRIVATE);
String value = mSharedPref.getString("key", null);

if(value !=null){
//do something with value
}

Another approach is using interface-callback pattern. You can read more here.

Misagh Emamverdi
  • 3,654
  • 5
  • 33
  • 57