0

I have the activity1 that extends fragment. Here there is an ArrayList (FinalListToSend) that I want to pass to the other activity2

 //ACTIVITY1
    public class Page1Activity extends Fragment {
    ArrayList<String> FinalListToSend;

public ArrayList<String> getList() {
    return FinalListToSend;
}

public void setList(ArrayList<String> FinalListToSend) {
    this.FinalListToSend = FinalListToSend;
}
    public static Page1Activity newInstance() {
    Page1Activity fragment = new Page1Activity();
    return fragment;
    }
public Page1Activity() { }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_page1, container, false);       
   return rootView;
   }
  }

I want to get the ArrayList in a second activity2

      //ACTIVITY2
     public static Page2Activity newInstance() {
    Page2Activity fragment = new Page2Activity();
    return fragment;
}
public Page2Activity() {    }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View rootView = inflater.inflate(R.layout.activity_page2, container, false);
     Page1Activity page1= new Page1Activity();
            ArrayList<String> ListToSave = new ArrayList<String>();
            ListToSave=new ArrayList<String>(page1.FinalListToSend);
      return rootView;
     }}

I use view pager for this two activities. I use this code and when I debug the FinalListToSend gets the items correctly when I am in Page1Activity, but when I press the button on PageActivity the FinalListToSend gets null.Any idea to get the array from the second activity?

Apollon
  • 311
  • 7
  • 29

3 Answers3

1

Did you try with Bundle

Page2Activity tf = new Page2Activity ();
                 Bundle bundle = new Bundle();
                 bundle.putString("user_id", usersid);
                 tf.setArguments(bundle);
                 FragmentManager fm = getFragmentManager();
                 FragmentTransaction ft = fm.beginTransaction();
                 ft.replace(R.id.frame_container, tf);
                 ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                 ft.addToBackStack(null);
                 ft.commit();

To get bundle data

usersid = getArguments().getString("user_id");

And for Arraylist you can use

bundle.putStringArrayList("alist", yourarraylist);
Aditya Vyas-Lakhan
  • 13,409
  • 16
  • 61
  • 96
1

Finally I got it.Needs to set the arraylist in the main activity as Final static

      public class MainActivity extends AppCompatActivity {

private static ArrayList<String> FinalListToSend=new ArrayList<>();

public ArrayList<String> getList() {
    return FinalListToSend;
}

public void setList(ArrayList<String> FinalListToSend) {
    this.FinalListToSend = FinalListToSend;
}

and then set it from the first fragment

        public class Page1Activity extends Fragment {
        addBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        ArrayList<String> listErgasies = new ArrayList<String>();
        listErgasies.add("DATA");
        MainActivity MA= new MainActivity();
            MA.setList(listErgasies);});
          }

and get it from the second fragment

      public class Page2Activity extends Fragment {
      saveBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       ArrayList<String> ListToSave = new ArrayList<String>();
       MainActivity MA= new MainActivity();
            ListToSave=new ArrayList<String>(MA.getList());}
         //  Toast.makeText(getActivity(),ListToSave.toString(),Toast.LENGTH_SHORT).show();
    });}
Apollon
  • 311
  • 7
  • 29
0

1) pass the arraylist listErgasies from activity 1 to activity 2 How to pass ArrayList<CustomeObject> from one activity to another?

2) show it as a listView again

Community
  • 1
  • 1
Chris Yu
  • 39
  • 2