J'ai un ImageView. Je souhaite passer d'un fragment à un autre en un clic sur ImageView, de la même manière que nous pouvons passer d'une activité à une autre à l'aide de
Intent i=new Intent(MainActivity.this,SecondActivity.class);
startActivity(i);
Comment puis-je faire ceci? Quelqu'un peut-il m'expliquer étape par étape?
Mes codes sont les suivants:
mycontacts.class
public class mycontacts extends Fragment {
public mycontacts() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = super.getView(position, convertView, parent);
ImageView purple=(ImageView)v.findViewById(R.id.imageView1);
purple.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//how to go to tasks fragment from here???
}
});
return view;
}
}
tasks.class
public class tasks extends Fragment {
public tasks() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout_one, container,
false);
return view;
}
}
purple.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment = new tasks();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
vous écrivez le code ci-dessus ... là nous remplaçons R.id.content_frame par notre fragment . espérons que cela vous aide
vous pouvez passer à un autre fragment en utilisant les transactions FragmentManager. Fragment ne peut pas s'appeler comme des activités. Des fragments existent sur l'existence d'activités.
Vous pouvez appeler un autre fragment en écrivant le code ci-dessous:
FragmentTransaction t = this.getFragmentManager().beginTransaction();
Fragment mFrag = new MyFragment();
t.replace(R.id.content_frame, mFrag);
t.commit();
ici "R.id.content_frame" est l'identifiant de la mise en page sur laquelle vous voulez remplacer le fragment.
vous pouvez également ajouter l'autre fragment en cas de remplacement.
dans votre onClickListener.onClick, mettez
getFragmentManager().beginTransaction().replace(R.id.container, new tasks()).commit();
Dans un autre mot, dans votre mycontacts.class
public class mycontacts extends Fragment {
public mycontacts() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = super.getView(position, convertView, parent);
ImageView purple=(ImageView)v.findViewById(R.id.imageView1);
purple.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getFragmentManager()
.beginTransaction()
.replace(R.id.container, new tasks())
.commit();
}
});
return view;
}
}
maintenant, rappelez-vous que R.id.container
est le conteneur (FrameLayout ou autres mises en page) de l'activité qui appelle le fragment.