0

I am new to android app development and i am currently working on a project that have NavigationDrawer with TabBarLayout. My problem is that i had a fragment consisting of two button Login and register:

 lgn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                fragmentManager=getActivity().getSupportFragmentManager();
                fragmentTransaction=fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.containerView,new TabFragment()).addToBackStack(null).commit();
            }
        });

        rgst.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                fragmentManager=getActivity().getSupportFragmentManager();
                fragmentTransaction=fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.containerView,new TabFragment()).addToBackStack(null).commit();
            }
        });

Now if i click on login or register button tabbar layout open. Now i want that if i click on login button , login fragment is show in tabbar layout and if i click on register button , register fragment is open in tabbar.

I also search on Google for that and find viewpager.setCurrentItembut i am unable to use that for my requirement

i use like this

public class TabFragment extends Fragment {

    public static TabLayout tabLayout;
    public static ViewPager viewPager;
    public static int int_items = 2 ;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View x=inflater.inflate(R.layout.tab_layout,null);

        tabLayout=(TabLayout)x.findViewById(R.id.tabs);
        viewPager=(ViewPager)x.findViewById(R.id.viewpager);

        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));

        viewPager.setCurrentItem(1); //here i am unable to decide how to open specific fragment

        tabLayout.post(new Runnable() {
            @Override
            public void run() {

                tabLayout.setupWithViewPager(viewPager);
            }
        });
        return x;
    }
    class MyAdapter extends FragmentPagerAdapter{

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position)
            {
                case 0: return new Login();
                case 1: return new Registration();

            }

            return null;
        }

        @Override
        public int getCount() {
            return int_items;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position)
            {
                case 0:
                    return "Login";
                case 1:
                    return "Registration";
            }
            return null;
        }
    }

please hint me some logic to do that ...thanks in advance...

Manish
  • 234
  • 2
  • 13

1 Answers1

0

Pass a boolean with the button click and receive them in the TabFragment.

Check the boolean and set the appropiate viewpager item:

first in register and login button fragment pass value to determine which button is clicked

 lgn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                fragmentManager=getActivity().getSupportFragmentManager();
                Bundle bundle=new Bundle();
                bundle.putBoolean("Register",false);
                TabFragment fragment=new TabFragment();
                fragment.setArguments(bundle);
                fragmentTransaction=fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.containerView,fragment).addToBackStack(null).commit();
            }
        });

        rgst.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                fragmentManager=getActivity().getSupportFragmentManager();
                Bundle bundle=new Bundle();
                bundle.putBoolean("Register",true);
                TabFragment fragment=new TabFragment();
                fragment.setArguments(bundle);
                fragmentTransaction=fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.containerView,fragment).addToBackStack(null).commit();
            }
        });

And after that in tabbar layout use this code to consider boolean values is true pr false

 @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View x=inflater.inflate(R.layout.tab_layout,null);

        tabLayout=(TabLayout)x.findViewById(R.id.tabs);
        viewPager=(ViewPager)x.findViewById(R.id.viewpager);

        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));


        Bundle bundle=getArguments();
       check=bundle.getBoolean("Register");
        if (check)
        {
            viewPager.setCurrentItem(1);
        }

        tabLayout.post(new Runnable() {
            @Override
            public void run() {

                tabLayout.setupWithViewPager(viewPager);
            }
        });
        return x;
    }
Manish
  • 234
  • 2
  • 13
kgandroid
  • 5,507
  • 5
  • 39
  • 69
  • and how to consider for which button this bool is true – Manish Aug 09 '16 at 09:39
  • That is your logic.Say for login button you set the boolean to be true and for registration false.Then check the boolean value and launch the appropiate viewpager item. – kgandroid Aug 09 '16 at 09:40
  • thanks for your response but i am asking login and register button are in another fragment page and how i tell my tabbar layout that which button is clicked to open specific login or register page .... – Manish Aug 09 '16 at 09:43
  • 1
    Pass a boolean or a flag with the register and login button click to the fragment(TabFragment ).Then check its value and launch viewpager – kgandroid Aug 09 '16 at 09:44
  • See this to pass data: http://stackoverflow.com/questions/12739909/send-data-from-activity-to-fragment-in-android or you can find it on google – kgandroid Aug 09 '16 at 09:49
  • glad to see that you have figured it out – kgandroid Aug 09 '16 at 11:23