He creado una aplicación para Android en la que he añadido una actividad llamada profileview.java en el que los usuarios pueden ver allí o datos del perfil de otros usuarios. actividad Profileview contiene dos fragmentos poste y le gusta en el que tengo que mostrar el mensaje que se ha publicado por el usuario y el puesto deseado por el usuario, pero no obtener alguna idea de cómo enviar el ID de usuario de la actividad profileview a los otros dos fragmentos.
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;
}
}
quiero enviar ID de usuario de la profileaviewactivity a la posttimeline y al igual que los fragmentos.
pasar
userid
como parámetro alsettingtabAdopter
constructorpublic settingtabAdopter(@NonNull FragmentManager fm, String userid)
profileviewActivity -> onCreate
Tabadapter = new settingtabAdopter(getSupportFragmentManager(), userid);
hacer variable dentro privada
settingtabAdopter
private String userid;
inicializar dentro del constructor
this.userid = userid
Crear variable privada en cada fragmento y setter para sumar (posttimeline y similares) fragmentos
private String mUserid; void setMUserId(String mUserid){ this.mUserid = mUserid; }
En
settingtabAdopter
el interior degetItem
la función después de inicializar cada fragmento de establecer el varaible privada con eluserid
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; } }