0

I am storing some values in array list now i want to pass the same array list object to fragment from an activity. So how can i send the array list object from an activity and receive the same object in fragment.

0

4 Answers 4

1

Try this code in your activity, It is a code snippet from my working application.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    yourArrayList.add("test");
    yourArrayList.add("test2")
    Bundle bundle = new Bundle();
    bundle.putStringArrayList("arrayList", yourArrayList);
    yourFragment yourFragment = new yourFragment();
    yourFragment.setArguments(bundle);
    fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.add(R.id.main_container, yourFragment);
    fragmentTransaction.commit();
}

In your fragment you can access the value like this

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

    ArrayList<String> values = getArguments().getStringArrayList("arrayList");

}
Sign up to request clarification or add additional context in comments.

Comments

1

pass activity should follow this lines

  Bundle bundle = new Bundle();
    bundle.putStringArrayList("valuesArray", namesArray);
    namesFragment myFragment = new namesFragment();
    myFragment.setArguments(bundle);
    fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.add(R.id.main_container, myFragment);
    fragmentTransaction.commit();

get Fragment inside follow this lines

 ArrayList<ObjectName> arraylist  = extras.getParcelableArrayList("valuesArray");

2 Comments

Hmmm ArrayList<ObjectName> arraylist sure about this line.? will it work for T objects?
ur model name ex: ArrayList<MyModel> arraylist
0

You can do this by following the usual way of Fragment-Activity communication. That is:

1) Declare a public interface within your Fragment class.

2) Inside this interface declare a getter method for your list.

3) Make your respective Activity implement this interface.

4) Inside your Fragment, do this:

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    YourInterfaceType activity = (YourInterfaceType) context;
    List<> yourList = activity.getMyList();
}

To make it more clear:

Your activity will be as follows:

public class MyActivity extends Activity implements YourInterfaceType{
    @Override
    public void getMyList(){
       return yourList;
    }
}

Comments

0

just put your array with setargument in Actiivty and get Array getArgument in fragment.

Activity

    Bundle bundle = new Bundle();
    bundle.putStringArrayList("valuesArray", namesArray);
    namesFragment myFragment = new namesFragment();
    myFragment.setArguments(bundle);
    fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.add(R.id.main_container, myFragment);
    fragmentTransaction.commit();

fragment

 ArrayList<Model> values = getArguments().getStringArrayList("valuesArray");

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.