How to move from one fragment to another fragment on click of an ImageView in Android?

后端 未结 6 1300
不知归路
不知归路 2020-12-03 10:16

I have an ImageView. I want to move from one fragment to another fragment on a click of an Imageview, the same way like we can move from one activity to another using

<
相关标签:
6条回答
  • 2020-12-03 11:02

    inside your onClickListener.onClick, put

    getFragmentManager().beginTransaction().replace(R.id.container, new tasks()).commit();
    

    In another word, in your 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;
    
        }
    }
    

    now, remember R.id.container is the container (FrameLayout or other layouts) for the activity that calls the fragment

    0 讨论(0)
  • 2020-12-03 11:03

    Add this code where you want to click and load Fragment. I hope it's work for you.

    
    Fragment fragment = new yourfragment();
            FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fragment_container, fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
    
    
    0 讨论(0)
  • 2020-12-03 11:06

    When you are inside an activity and need to go to a fragment use below

    getFragmentManager().beginTransaction().replace(R.id.*TO_BE_REPLACED_LAYOUT_ID*, new tasks()).commit();

    But when you are inside a fragment and need to go to a fragment then just add a getActivity(). before, so it would become

    getActivity().getFragmentManager().beginTransaction().replace(R.id.*TO_BE_REPLACED_LAYOUT_ID*, new tasks()).commit();

    as simple as that.

    The *TO_BE_REPLACED_LAYOUT_ID* can be the entire page of activity or a part of it, just make sure to put an id to the layout to be replaced. It is general practice to put the replaceable layout in a FrameLayout .

    0 讨论(0)
  • 2020-12-03 11:08
    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();
        }
    });
    

    you write the above code...there we are replacing R.id.content_frame with our fragment. hope this helps you

    0 讨论(0)
  • 2020-12-03 11:08

    you can move to another fragment by using the FragmentManager transactions. Fragment can not be called like activities,. Fragments exists on the existance of activities.

    You can call another fragment by writing the code below:

            FragmentTransaction t = this.getFragmentManager().beginTransaction();
            Fragment mFrag = new MyFragment();
            t.replace(R.id.content_frame, mFrag);
            t.commit();
    

    here "R.id.content_frame" is the id of the layout on which you want to replace the fragment.

    you can also add the other fragment incase of replace.

    0 讨论(0)
  • 2020-12-03 11:23
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_profile, container, false);
        notification = (ImageView)v.findViewById(R.id.notification);
    
        notification.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                FragmentTransaction fr = getFragmentManager().beginTransaction();
                fr.replace(R.id.container,new NotificationFragment());
                fr.commit();
            }
        });
    
        return v;
    }
    
    0 讨论(0)
提交回复
热议问题