How to pass intent extras to multiple fragment inside Activity viewpager from PreviousActivity

Pro Academy :

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.

Android Developer :

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.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=162334&siteId=1