web-dev-qa-db-fra.com

Comment passer d'un fragment à un autre en un clic sur un ImageView dans Android?

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

47
GvSharma

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.

1
Ashok Singhal

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.

1
t_mo_t