I have Two Activity Activity A and B. Activity B contain viewpager which has two fragment, Fragment I and Fragment II. I"m looking a solution to pass two separate intent extras i.e intent extras_one and intentextra_two from Activity A to B and load first intent extras in Fragment I and Second intent_extras in Fragment II.
Is this possible.
Here is my viewpager in Activity B
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new Home(), "Fragment I");
adapter.addFragment(new Grade(), "Fragment II");
viewPager.setAdapter(adapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
I'm using case statement for now to pass arguments in Activity A.
case 0:
Intent math_strt = new Intent(itemView.getContext(), MainActivity.class);
math_strt.putExtra(EXTRA_URL, "https://api.myjson.com/bins/16mecx");
itemView.getContext().startActivity(math_strt);
break;
Thanks in advance.
Here is solution, you have to create 2 methods in Activity A
1. passIntent1()
private void passIntent1(){
Intent intent = new Intent(getBaseContext(), SecondActivity.class);
intent.putExtra("INTENT_VALUE", "A");
intent.putExtra("FRAGMENT_A", value for A);
startActivity(intent);
}
2. passIntent2()
private void passIntent2(){
Intent intent = new Intent(getBaseContext(), SecondActivity.class);
intent.putExtra("INTENT_VALUE", "B");
intent.putExtra("FRAGMENT_B", value for B);
startActivity(intent);
}
Now, Inside B Activity, get your Intent
String value = getIntent().getStringExtra("INTENT_VALUE");
if(value.equalsIgnoreCase("A")){
String FragA = getIntent().getStringExtra("FRAGMENT_A");
}else if(value.equalsIgnoreCase("B")){
String FragB = getIntent().getStringExtra("FRAGMENT_B");
}
Now pass the value FragA to Fragment A and FragB to Fragment B
UPDATED CODE BELOW
In Activity use below code to pass Values in fragments. You have to use Bundle to pass data to fragments
Home home = new Home();
Bundle homeBundle = new Bundle();
homeBundle.putString("KEY","VALUE");
// Your Key must same when you get your values in Fragment Home
home.setArguments(homeBundle);
Similarly you have do same for Fragment Grade
Grade grade = new Grade();
Bundle gradeBundle = new Bundle();
gradeBundle.putString("KEY","VALUE");
grade.setArguments(gradeBundle);
Add fragments to adapter
adapter.addFragment(home, "Fragment I");
adapter.addFragment(grade, "Fragment II");
Now in side Fragment, to get values use below code
Bundle bundle = getArguments();
if(bundle!=null){
String value = bundle.getString("KEY");
}
Hope, now you understand in better way.