Trying to send the userid from the activity to the viewholder fragment

NANB :

I have created an android app in which I have added an activity called profileview.java on which users can view there or other user's profile data. Profileview activity contains two fragments post and likes on which I have to show the post that is been posted by the user and the post liked by the user but not getting any idea how to send the userid from the profileview activity to the other two fragments.

profileviewactivity.class

 public class profileviewActivity extends AppCompatActivity {
  public String userid;
  private ViewPager viewPager;
  private TabLayout tabLayout;
  private settingtabAdopter Tabadapter;
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profileview);

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    Tabadapter = new settingtabAdopter(getSupportFragmentManager());
    viewPager.setAdapter(Tabadapter);

    tabLayout = (TabLayout) findViewById(R.id.tablayout);
    tabLayout.setupWithViewPager(viewPager);

    userid = getIntent().getExtras().get("userid").toString();
  }
}

settingadapter.java

public class settingtabAdopter extends FragmentPagerAdapter {
public settingtabAdopter(@NonNull FragmentManager fm) {
    super(fm);
}

@NonNull
@Override
public Fragment getItem(int position) {
    switch (position){
        case 0:
            posttimeline postfragment = new posttimeline();
            return postfragment;
        case 1:
            like chatfragment = new like();
            return chatfragment;
        default:
            return null;
    }
}

@Override
public int getCount() {
    return 2;
}

@Nullable
@Override
public CharSequence getPageTitle(int i) {
    switch (i){
        case 0:
            return "Posts";
        case 1:
            return "Likes";
        default:
            return null;
    }
}
}

posttimeline.java

  public class posttimeline extends Fragment {
  View posttimelineview;
   public posttimeline() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
   posttimelineview =  inflater.inflate(R.layout.fragment_posttimeline, container, false);
   return posttimelineview;
  }
}

like.java

 public class like extends Fragment {
 View Likeview;
  public like() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    Likeview = inflater.inflate(R.layout.fragment_like, container, false);
 return Likeview;
}
}

i want to send userid from the profileaviewactivity to the posttimeline and like fragment.

Adham Gamal :
  1. pass userid as parameter at settingtabAdopter constructor

    public settingtabAdopter(@NonNull FragmentManager fm, String userid) 
    

    profileviewActivity -> onCreate

    Tabadapter = new settingtabAdopter(getSupportFragmentManager(), userid);
    
  2. make private variable inside settingtabAdopter

    private String userid;
    

    initialize it inside constructor

    this.userid = userid
    
  3. Create private variable in each fragment and add setter (posttimeline and like) fragments

    private String mUserid;
    void setMUserId(String mUserid){
        this.mUserid = mUserid;
    }
    
  4. On settingtabAdopter inside getItem function after initialize each fragment set the private varaible with the userid

    public Fragment getItem(int position) {
        switch (position){
            case 0:
                posttimeline postfragment = new posttimeline();
                postfragment.setMUserId(userid)
                return postfragment;
            case 1:
                like chatfragment = new like();
                chatfragment.setMUserId(userid)
                return chatfragment;
            default:
                return null;
        }
    }
    

Guess you like

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