Skip to content Skip to sidebar Skip to footer

How To Pass From One Fragment To Another

In my app I have navigation drawer with some fragments. When I choose in the drawer I do this code: FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.container, f, ta

Solution 1:

You can do like this...

//when navigation item is selected by user@OverridepublicvoidonDrawerItemSelected(View view, int position) {
        displayView(position);
    }

    publicvoiddisplayView(int position) {
        Stringtitle= getString(R.string.app_name);
        switch (position) {
            case0:
                fragment = newUserProjectListFragment();                    
                break;
            case1:
                fragment = newContactUsFragment();
                break;
            case2:
                fragment = newHelpFragment();
                break;
            case3:
                //and so onbreak;

            default:
                break;
        }
        if (fragment != null) {
            FragmentManagerfragmentManager= getSupportFragmentManager();
            FragmentTransactionfragmentTransaction= fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container_body, fragment).addToBackStack("fragBack");
            fragmentTransaction.commit();
            // set the toolbar title
            getSupportActionBar().setTitle(title);
        }
    }

/and for your question is it possible to replace from one fragment to another? Where could I put fragmentTransaction? yes do like this

FragmentvideoFragment=newVideoPlayerFragment();
FragmentTransactiontransaction= getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();

Solution 2:

you can do Something like that

String cid=id.getText().toString();

 Fragment fr=newfriendfragment();

 FragmentManager fm=getFragmentManager();

 android.app.FragmentTransaction ft=fm.beginTransaction();

 Bundleargs=newBundle();

 args.putString("CID", cid);

 fr.setArguments(args);

 ft.replace(R.id.content_frame, fr);

 ft.commit(); 

you can receive data

@OverridepublicViewonCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String strtext = getArguments().getString("CID");    
    return inflater.inflate(R.layout.fragment, container, false);
}

Solution 3:

If you want to have nested Fragments, you need to target minimum API level 17, from which version it is supported. See here.

Solution 4:

You can create xml like this:

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.design.widget.TabLayoutandroid:id="@+id/pagerTabStrip"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="?attr/colorPrimary"app:tabIndicatorColor="?android:attr/textColorPrimary"app:tabIndicatorHeight="5dp"app:tabSelectedTextColor="?android:attr/textColorPrimary"app:tabTextColor="?android:attr/textColorPrimary" /><android.support.v4.view.ViewPagerandroid:id="@+id/pager"android:layout_width="match_parent"android:layout_height="match_parent" />

Then you create pager adapter in your fragment:

PagerAdapteradapter=newPagerAdapter(getChildFragmentManager());
    mPagerTabStrip.setTabsFromPagerAdapter(adapter);
    mPagerTabStrip.setOnTabSelectedListener(newTabLayout.OnTabSelectedListener() {
        @OverridepublicvoidonTabSelected(TabLayout.Tab tab) {
        }

        @OverridepublicvoidonTabUnselected(TabLayout.Tab tab) {

        }

        @OverridepublicvoidonTabReselected(TabLayout.Tab tab) {

        }
    });
    mViewPager.setAdapter(adapter);
    mViewPager.addOnPageChangeListener(newTabLayout.TabLayoutOnPageChangeListener(mPagerTabStrip));

privateclassPagerAdapterextendsFragmentPagerAdapter {
    private Map<Integer, String> mFragmentTags;
    private FragmentManager mFragmentManager;

    publicPagerAdapter(FragmentManager fm) {
        super(fm);
        this.mFragmentManager = fm;
        mFragmentTags = newHashMap<>();
    }

    @Overridepublic Fragment getItem(int position) {
        Fragmentfragment=newMyBookFragment();
        Bundleargs=newBundle();
        args.putInt("MyBookFragment", position);
        args.putInt("mSelectedPosition", mSelectedPosition);
        fragment.setArguments(args);
        return fragment;
    }

    @OverridepublicintgetCount() {
        return2;
    }

    @Overridepublic Object instantiateItem(ViewGroup container, int position) {
        Objectobjects=super.instantiateItem(container, position);
        if (objects instanceof Fragment) {
            Fragmentfragment= (Fragment) objects;
            Stringtag= fragment.getTag();
            mFragmentTags.put(position, tag);
        }
        return objects;
    }

    public Fragment getFragment(int position) {
        Stringtag= mFragmentTags.get(position);
        if (TextUtils.isEmpty(tag)) {
            returnnull;
        }
        return mFragmentManager.findFragmentByTag(tag);
    }

    @Overridepublic CharSequence getPageTitle(int position) {
        switch (position) {
            case0:
                return getString(R.string.now);
            default:
                return getString(R.string.my_book_reservation);
        }
    }
}

Solution 5:

You can try this thing for navigation list..i think is helpful for you

navigation_list is listview on Navigatindrawer

    navigation_list.setOnItemClickListener(newOnItemClickListener() {

        @OverridepublicvoidonItemClick(AdapterView<?> parent, View view,
                int position, long id) {



                    switch (position) {
                    case0:

                        getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.frame_container,
                                        newNewsDateFragment()).commit();
                        mDrawerLayout.closeDrawer(Gravity.LEFT);
                        break;

                    case1:

                        getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.frame_container,
                                        newNewsDateFragment()).commit();
                        mDrawerLayout.closeDrawer(Gravity.LEFT);
                        break;
                    case2:

                        getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.frame_container,
                                        newGossipDateFragment()).commit();
                        mDrawerLayout.closeDrawer(Gravity.LEFT);
                        break;
                    case3:

                        getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.frame_container,
                                        newStroriesFragment()).commit();
                        mDrawerLayout.closeDrawer(Gravity.LEFT);
                        break;

                    case4:

                        getSupportFragmentManager().beginTransaction()
                                .replace(R.id.frame_container, newLearnFragment())
                                .commit();
                        mDrawerLayout.closeDrawer(Gravity.LEFT);

                        break;

                    case5:

                        getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.frame_container,
                                        newWordsFocusFragment()).commit();
                        mDrawerLayout.closeDrawer(Gravity.LEFT);
                        break;

                    case7:

                        getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.frame_container,
                                        newSupportFragment()).commit();
                        mDrawerLayout.closeDrawer(Gravity.LEFT);
                        break;

                    case8:

                        // user.execute(user_id,intEventid);

                        session.logoutUser();

                        Intenti=newIntent(getApplicationContext(),
                                LoginActivity.class);
                        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(i);




                        mDrawerLayout.closeDrawer(Gravity.LEFT);

                        break;

                    }





        }
    });

Post a Comment for "How To Pass From One Fragment To Another"