0

I have a fragmentactivity that contains a string. I want to pass that string to another fragment. How can i do that. I found some links here,

Access to getString() in a fragment that implements a viewpager and How do I pass a variable through a FragmentPagerAdapter to a Fragment?.

But somehow, I don't really get what is being done there. Can anyone point out what is to be done in my case?

Pasting the code below:

Fragment Activity

   public class AdaptorMain extends FragmentActivity implements ActionBar.TabListener {

    private ViewPager viewPager;
    private TabsPagerAdaptor mAdaptor;
    private ActionBar actionBar;
    private String vehicleNumber;



    public String getVehicleNumber() {
        return vehicleNumber;
    }
    public void setVehicleNumber(String vehicleNumber) {
        this.vehicleNumber = vehicleNumber;
    }

    private String[] tabs = {"Vehicle Asset", "Human Asset", "Base Info"};

    @Override
    public void onCreate(Bundle savedInstanceState){
        Log.w("in adaptor","in adaptor activity");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.adaptor_main);
        Intent intent = getIntent();
        vehicleNumber = intent.getExtras().getString("KEY");
        Log.w("vehicle received is", "Number" + vehicleNumber);


        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        mAdaptor = new TabsPagerAdaptor(getSupportFragmentManager());

        viewPager.setAdapter(mAdaptor);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        for(String tab_name : tabs){
            actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));
        }

        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // TODO Auto-generated method stub
                actionBar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }
        });

    }
    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }
}

FragmentPagerAdaptor:

public class TabsPagerAdaptor extends FragmentPagerAdapter {

    public TabsPagerAdaptor(FragmentManager fragmentManager) {
        super(fragmentManager);
        // TODO Auto-generated constructor stub
    }

    @Override
    public Fragment getItem(int index) {
        // TODO Auto-generated method stub
        switch(index){
        case 0 :
            return new VehicleAssetTab();
        case 1:
            return new HumanAssetTab();
        case 2: 
            return new BaseInfoTab();
        }
        return null;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 3;
    }
}

Fragment

public class VehicleAssetTab extends Fragment{  
    String vehicleNumber;   
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

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

        TextView tv1 = (TextView) rootView.findViewById(R.id.textView2);       
        //Log.w("vehicle number in tab", "number: " + vehicleNumber);
        //tv1.setText(obj.vehicleNumber);        
        return rootView;
    }
}

Thank you

Community
  • 1
  • 1
Anvith
  • 477
  • 9
  • 22

2 Answers2

1

try like this,

in Fragment Activity

mAdaptor = new TabsPagerAdaptor(getSupportFragmentManager(),vehicleNumber);

& in FragmentPagerAdaptor,

String mvehicleNumber;

 public TabsPagerAdaptor(FragmentManager fragmentManager,String vehicleNumber) {
        super(fragmentManager);
        this.mvehicleNumber = vehicleNumber;
    }

@Override
    public Fragment getItem(int index) {
        // TODO Auto-generated method stub
        switch(index){
        case 0 :
            return new VehicleAssetTab(mvehicleNumber);
        }
        return null;
    }

in Fragment,

String mvehicleNumber;

 public VehicleAssetTab(String vehicleNumber) {
       this.mvehicleNumber = vehicleNumber;
    }

hope it will help you

Akash Moradiya
  • 3,318
  • 1
  • 14
  • 19
1

in FragmentActivity change this line

mAdaptor = new TabsPagerAdaptor(getSupportFragmentManager(),vehicleNumber );

FragmentPagerAdapter

public class TabsPagerAdaptor extends FragmentPagerAdapter {
String vehicleNumber;
public TabsPagerAdaptor(FragmentManager fragmentManager,String vehicleNumber) {
    super(fragmentManager);
    this.vehicleNumber = vehicleNumber;
    // TODO Auto-generated constructor stub
}

@Override
public Fragment getItem(int index) {
    // TODO Auto-generated method stub

    Bundle args = new Bundle();
    args.putString("vehicleNumber", vehicleNumber);


    switch(index){
    case 0 :
        VehicleAssetTab vehicle = VehicleAssetTab();
        vehicle.setArguments(args);
        return vehicle ;

    case 1:
        HumanAssetTab human = HumanAssetTab();
        human.setArguments(args);
        return human ;

    case 2: 
        BaseInfoTab base= BaseInfoTab();
        base.setArguments(args);
        return base;
    }
    return null;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return 3;
}

}

Fragment

public class VehicleAssetTab extends Fragment{  
String vehicleNumber;   
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    vehicleNumber = getArguments().getString("vehicleNumber ", "defaultString");
    View rootView = inflater.inflate(R.layout.vehicle_asset_tab, container, false);

    TextView tv1 = (TextView) rootView.findViewById(R.id.textView2);       
    Log.w("vehicle number in tab", "number: " + vehicleNumber);
    tv1.setText(vehicleNumber);        
    return rootView;
}
}
John
  • 8,846
  • 8
  • 50
  • 85