尝试将用户ID从活动发送到Viewholder片段

问题描述 投票:0回答:1

我创建了一个android应用,其中添加了一个名为profileview.java的活动,用户可以在该活动上查看该活动或其他用户的个人资料数据。 Profileview活动包含两个片段和喜欢的片段,我必须在这些片段上显示用户发布的帖子以及用户喜欢的帖子,但不知道如何将用户ID从Profileview活动发送到其他两个片段。

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;
}
}

我想将用户ID从profileaviewactivity发送到后时间表和类似片段。

java android
1个回答
0
投票
  1. [userid作为settingtabAdopter构造函数的参数传递

    public settingtabAdopter(@NonNull FragmentManager fm, String userid) 
    

    profileviewActivity-> onCreate

    Tabadapter = new settingtabAdopter(getSupportFragmentManager(), userid);
    
  2. settingtabAdopter内设置私有变量

    private String userid;
    

    在构造函数内部初始化

    this.userid = userid
    
  3. 在每个片段中创建私有变量并添加setter(后时间线等)片段

    private String mUserid;
    void setMUserId(String mUserid){
        this.mUserid = mUserid;
    }
    
  4. settingtabAdopter函数内的getItem上初始化每个片段后,用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;
        }
    }
    
© www.soinside.com 2019 - 2024. All rights reserved.