How to pass ArrayList?
To avoid creating multiple activities I have one Activity2 that has this code that allows me to just pass an array of Fragments from any Activity I want.
privateArrayList<Fragment> fragArrayList;
fragArrayList = intent.getParcelableArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(Fragment fragment) {
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
In Activity1 I have this code (That I know doesn't work)
Wrong 2nd argument type. Found: 'java.util.ArrayList<android.support.v4.app.Fragment>', required: 'java.util.ArrayList<? extends android.os.Parcelable>'
.
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<Fragment> fragArrayList = new ArrayList<>();
fragArrayList.add(new frag1());
fragArrayList.add(new frag2());
fragArrayList.add(new frag3());
fragArrayList.add(new frag4());
fragArrayList.add(new frag5());
intent.putParcelableArrayListExtra("fragArrayList"), fragArrayList);
The point is to make fragArrayList travel from any Activity to Activity2. And since the frags inside fragArrayList will be different depending on the activity they are coming from I cant just add them to the ArrayList inside Activity2.
And since there will be several activities is not efficient to create logic inside the Activity2 to handle from each Activity the user came from.
How can I pass the ArrayList from Activity1 to Activity2?
java android android-fragments arraylist
add a comment |
To avoid creating multiple activities I have one Activity2 that has this code that allows me to just pass an array of Fragments from any Activity I want.
privateArrayList<Fragment> fragArrayList;
fragArrayList = intent.getParcelableArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(Fragment fragment) {
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
In Activity1 I have this code (That I know doesn't work)
Wrong 2nd argument type. Found: 'java.util.ArrayList<android.support.v4.app.Fragment>', required: 'java.util.ArrayList<? extends android.os.Parcelable>'
.
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<Fragment> fragArrayList = new ArrayList<>();
fragArrayList.add(new frag1());
fragArrayList.add(new frag2());
fragArrayList.add(new frag3());
fragArrayList.add(new frag4());
fragArrayList.add(new frag5());
intent.putParcelableArrayListExtra("fragArrayList"), fragArrayList);
The point is to make fragArrayList travel from any Activity to Activity2. And since the frags inside fragArrayList will be different depending on the activity they are coming from I cant just add them to the ArrayList inside Activity2.
And since there will be several activities is not efficient to create logic inside the Activity2 to handle from each Activity the user came from.
How can I pass the ArrayList from Activity1 to Activity2?
java android android-fragments arraylist
stackoverflow.com/questions/13601883/…
– Vishal Sharma
Nov 13 '18 at 18:08
follow this link
– Vishal Sharma
Nov 13 '18 at 18:09
add a comment |
To avoid creating multiple activities I have one Activity2 that has this code that allows me to just pass an array of Fragments from any Activity I want.
privateArrayList<Fragment> fragArrayList;
fragArrayList = intent.getParcelableArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(Fragment fragment) {
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
In Activity1 I have this code (That I know doesn't work)
Wrong 2nd argument type. Found: 'java.util.ArrayList<android.support.v4.app.Fragment>', required: 'java.util.ArrayList<? extends android.os.Parcelable>'
.
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<Fragment> fragArrayList = new ArrayList<>();
fragArrayList.add(new frag1());
fragArrayList.add(new frag2());
fragArrayList.add(new frag3());
fragArrayList.add(new frag4());
fragArrayList.add(new frag5());
intent.putParcelableArrayListExtra("fragArrayList"), fragArrayList);
The point is to make fragArrayList travel from any Activity to Activity2. And since the frags inside fragArrayList will be different depending on the activity they are coming from I cant just add them to the ArrayList inside Activity2.
And since there will be several activities is not efficient to create logic inside the Activity2 to handle from each Activity the user came from.
How can I pass the ArrayList from Activity1 to Activity2?
java android android-fragments arraylist
To avoid creating multiple activities I have one Activity2 that has this code that allows me to just pass an array of Fragments from any Activity I want.
privateArrayList<Fragment> fragArrayList;
fragArrayList = intent.getParcelableArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(Fragment fragment) {
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
In Activity1 I have this code (That I know doesn't work)
Wrong 2nd argument type. Found: 'java.util.ArrayList<android.support.v4.app.Fragment>', required: 'java.util.ArrayList<? extends android.os.Parcelable>'
.
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<Fragment> fragArrayList = new ArrayList<>();
fragArrayList.add(new frag1());
fragArrayList.add(new frag2());
fragArrayList.add(new frag3());
fragArrayList.add(new frag4());
fragArrayList.add(new frag5());
intent.putParcelableArrayListExtra("fragArrayList"), fragArrayList);
The point is to make fragArrayList travel from any Activity to Activity2. And since the frags inside fragArrayList will be different depending on the activity they are coming from I cant just add them to the ArrayList inside Activity2.
And since there will be several activities is not efficient to create logic inside the Activity2 to handle from each Activity the user came from.
How can I pass the ArrayList from Activity1 to Activity2?
java android android-fragments arraylist
java android android-fragments arraylist
edited Nov 13 '18 at 18:19
newbieCoder.pkg
asked Nov 13 '18 at 18:02
newbieCoder.pkgnewbieCoder.pkg
15013
15013
stackoverflow.com/questions/13601883/…
– Vishal Sharma
Nov 13 '18 at 18:08
follow this link
– Vishal Sharma
Nov 13 '18 at 18:09
add a comment |
stackoverflow.com/questions/13601883/…
– Vishal Sharma
Nov 13 '18 at 18:08
follow this link
– Vishal Sharma
Nov 13 '18 at 18:09
stackoverflow.com/questions/13601883/…
– Vishal Sharma
Nov 13 '18 at 18:08
stackoverflow.com/questions/13601883/…
– Vishal Sharma
Nov 13 '18 at 18:08
follow this link
– Vishal Sharma
Nov 13 '18 at 18:09
follow this link
– Vishal Sharma
Nov 13 '18 at 18:09
add a comment |
3 Answers
3
active
oldest
votes
Fragments are not Parcelable, so you won't be able to pass them via intent. You could pass the fully qualified fragment class name via intent and then instantiate the fragment(s) in Activity2 via reflection.
1
You can also build an ArrayList of Class objects, which are serializable, then use putExtra(name, arrayList), recover them with getSerializable(name), and then build the fragments with reflection directly from the class object with newInstance().
– gicci
Nov 13 '18 at 21:53
Thank you for your answers I did it!
– newbieCoder.pkg
Nov 14 '18 at 13:28
add a comment |
That's a bad design passing list of fragment objects and you could only pass array of Parcelable class of object.
add a comment |
Success Thank you to: Greg Moens & gicci for the insight
Activity1
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<String> fragArrayList= new ArrayList<>();
fragArrayList.add(String.valueOf(frag1.class.getName()));
fragArrayList.add(String.valueOf(frag2.class.getName()));
fragArrayList.add(String.valueOf(frag3.class.getName()));
fragArrayList.add(String.valueOf(frag4.class.getName()));
fragArrayList.add(String.valueOf(frag5.class.getName()));
intent.putExtra("fragArrayList"), fragArrayList);
Activity2
ArrayList<String> fragArrayList = new ArrayList<>();
fragArrayList = intent.getStringArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(String fragClass) {
Fragment fragment = Fragment.instantiate(this, fragClass);
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53286995%2fhow-to-pass-arraylistfragment%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Fragments are not Parcelable, so you won't be able to pass them via intent. You could pass the fully qualified fragment class name via intent and then instantiate the fragment(s) in Activity2 via reflection.
1
You can also build an ArrayList of Class objects, which are serializable, then use putExtra(name, arrayList), recover them with getSerializable(name), and then build the fragments with reflection directly from the class object with newInstance().
– gicci
Nov 13 '18 at 21:53
Thank you for your answers I did it!
– newbieCoder.pkg
Nov 14 '18 at 13:28
add a comment |
Fragments are not Parcelable, so you won't be able to pass them via intent. You could pass the fully qualified fragment class name via intent and then instantiate the fragment(s) in Activity2 via reflection.
1
You can also build an ArrayList of Class objects, which are serializable, then use putExtra(name, arrayList), recover them with getSerializable(name), and then build the fragments with reflection directly from the class object with newInstance().
– gicci
Nov 13 '18 at 21:53
Thank you for your answers I did it!
– newbieCoder.pkg
Nov 14 '18 at 13:28
add a comment |
Fragments are not Parcelable, so you won't be able to pass them via intent. You could pass the fully qualified fragment class name via intent and then instantiate the fragment(s) in Activity2 via reflection.
Fragments are not Parcelable, so you won't be able to pass them via intent. You could pass the fully qualified fragment class name via intent and then instantiate the fragment(s) in Activity2 via reflection.
answered Nov 13 '18 at 18:07
Greg MoensGreg Moens
51718
51718
1
You can also build an ArrayList of Class objects, which are serializable, then use putExtra(name, arrayList), recover them with getSerializable(name), and then build the fragments with reflection directly from the class object with newInstance().
– gicci
Nov 13 '18 at 21:53
Thank you for your answers I did it!
– newbieCoder.pkg
Nov 14 '18 at 13:28
add a comment |
1
You can also build an ArrayList of Class objects, which are serializable, then use putExtra(name, arrayList), recover them with getSerializable(name), and then build the fragments with reflection directly from the class object with newInstance().
– gicci
Nov 13 '18 at 21:53
Thank you for your answers I did it!
– newbieCoder.pkg
Nov 14 '18 at 13:28
1
1
You can also build an ArrayList of Class objects, which are serializable, then use putExtra(name, arrayList), recover them with getSerializable(name), and then build the fragments with reflection directly from the class object with newInstance().
– gicci
Nov 13 '18 at 21:53
You can also build an ArrayList of Class objects, which are serializable, then use putExtra(name, arrayList), recover them with getSerializable(name), and then build the fragments with reflection directly from the class object with newInstance().
– gicci
Nov 13 '18 at 21:53
Thank you for your answers I did it!
– newbieCoder.pkg
Nov 14 '18 at 13:28
Thank you for your answers I did it!
– newbieCoder.pkg
Nov 14 '18 at 13:28
add a comment |
That's a bad design passing list of fragment objects and you could only pass array of Parcelable class of object.
add a comment |
That's a bad design passing list of fragment objects and you could only pass array of Parcelable class of object.
add a comment |
That's a bad design passing list of fragment objects and you could only pass array of Parcelable class of object.
That's a bad design passing list of fragment objects and you could only pass array of Parcelable class of object.
answered Nov 13 '18 at 18:12
Ramesh YankatiRamesh Yankati
65858
65858
add a comment |
add a comment |
Success Thank you to: Greg Moens & gicci for the insight
Activity1
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<String> fragArrayList= new ArrayList<>();
fragArrayList.add(String.valueOf(frag1.class.getName()));
fragArrayList.add(String.valueOf(frag2.class.getName()));
fragArrayList.add(String.valueOf(frag3.class.getName()));
fragArrayList.add(String.valueOf(frag4.class.getName()));
fragArrayList.add(String.valueOf(frag5.class.getName()));
intent.putExtra("fragArrayList"), fragArrayList);
Activity2
ArrayList<String> fragArrayList = new ArrayList<>();
fragArrayList = intent.getStringArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(String fragClass) {
Fragment fragment = Fragment.instantiate(this, fragClass);
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
add a comment |
Success Thank you to: Greg Moens & gicci for the insight
Activity1
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<String> fragArrayList= new ArrayList<>();
fragArrayList.add(String.valueOf(frag1.class.getName()));
fragArrayList.add(String.valueOf(frag2.class.getName()));
fragArrayList.add(String.valueOf(frag3.class.getName()));
fragArrayList.add(String.valueOf(frag4.class.getName()));
fragArrayList.add(String.valueOf(frag5.class.getName()));
intent.putExtra("fragArrayList"), fragArrayList);
Activity2
ArrayList<String> fragArrayList = new ArrayList<>();
fragArrayList = intent.getStringArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(String fragClass) {
Fragment fragment = Fragment.instantiate(this, fragClass);
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
add a comment |
Success Thank you to: Greg Moens & gicci for the insight
Activity1
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<String> fragArrayList= new ArrayList<>();
fragArrayList.add(String.valueOf(frag1.class.getName()));
fragArrayList.add(String.valueOf(frag2.class.getName()));
fragArrayList.add(String.valueOf(frag3.class.getName()));
fragArrayList.add(String.valueOf(frag4.class.getName()));
fragArrayList.add(String.valueOf(frag5.class.getName()));
intent.putExtra("fragArrayList"), fragArrayList);
Activity2
ArrayList<String> fragArrayList = new ArrayList<>();
fragArrayList = intent.getStringArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(String fragClass) {
Fragment fragment = Fragment.instantiate(this, fragClass);
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
Success Thank you to: Greg Moens & gicci for the insight
Activity1
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<String> fragArrayList= new ArrayList<>();
fragArrayList.add(String.valueOf(frag1.class.getName()));
fragArrayList.add(String.valueOf(frag2.class.getName()));
fragArrayList.add(String.valueOf(frag3.class.getName()));
fragArrayList.add(String.valueOf(frag4.class.getName()));
fragArrayList.add(String.valueOf(frag5.class.getName()));
intent.putExtra("fragArrayList"), fragArrayList);
Activity2
ArrayList<String> fragArrayList = new ArrayList<>();
fragArrayList = intent.getStringArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(String fragClass) {
Fragment fragment = Fragment.instantiate(this, fragClass);
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
answered Nov 14 '18 at 13:27
newbieCoder.pkgnewbieCoder.pkg
15013
15013
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53286995%2fhow-to-pass-arraylistfragment%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
stackoverflow.com/questions/13601883/…
– Vishal Sharma
Nov 13 '18 at 18:08
follow this link
– Vishal Sharma
Nov 13 '18 at 18:09