Abhishek DS
Abhishek DS

Reputation: 47

How to open a specific tabbed activity on button click?

I have an activity which contains 2 buttons - Login and Sign up. Both of these has an activity linked (Fragment based Tabbed activity) which contains the Login/Signup form.

Now I'm unable to navigate to the particular tab when clicked on a button. ie, If signup button is clicked, it should open Signup fragment based tab and If login button is clicked, it should open login fragment based tab.

How do I achieve this?

Below are my codes for the respective actions.

Home Activity.java -

public class HomeActivity  extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        findViewById(R.id.signup_btn).setOnClickListener(listener_signup_btn);
        findViewById(R.id.signin_btn).setOnClickListener(listener_signin_btn);
    }

    View.OnClickListener listener_signup_btn = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Intent intent = new Intent(HomeActivity.this, SignupActivity.class);
            //startActivity(intent);
        }
    };

    View.OnClickListener listener_signin_btn = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(HomeActivity.this, HomeTaberActivity.class);
            startActivity(intent);
        }
    };
}

HomeTaberActivity.java -

public class HomeTaberActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener {

    private TabLayout hometabLayout;

    private ViewPager homeviewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hometaber);

        hometabLayout = (TabLayout) findViewById(R.id.hometabLayout);

        hometabLayout.addTab(hometabLayout.newTab().setText("Sign In"));
        hometabLayout.addTab(hometabLayout.newTab().setText("Sign Up"));
        hometabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        homeviewPager = (ViewPager) findViewById(R.id.homepager);

        HomePager adapter = new HomePager(getSupportFragmentManager(), hometabLayout.getTabCount());

        adapter.Initialise(new LoginActivity(),new SignupActivity());
        adapter.addstring("Sign In"); adapter.addstring("Sign Up");
        homeviewPager.setAdapter(adapter);
        hometabLayout.setupWithViewPager(homeviewPager);
    }

    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        homeviewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
}

Upvotes: 2

Views: 2349

Answers (2)

Vidhi Dave
Vidhi Dave

Reputation: 5684

Add one value with intent. i.e. for login 1 and signup 2. and check in activity if value is 1 then viewpager current item 0 and if 2 then viewpager current item 1.

Home Activity.java :

public class HomeActivity  extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        findViewById(R.id.signup_btn).setOnClickListener(listener_signup_btn);
        findViewById(R.id.signin_btn).setOnClickListener(listener_signin_btn);
    }

    View.OnClickListener listener_signup_btn = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(HomeActivity.this, HomeTaberActivity.class);
            intent.putExtra("value", 1);
            startActivity(intent);
        }
    };

    View.OnClickListener listener_signin_btn = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(HomeActivity.this, HomeTaberActivity.class);
            intent.putExtra("value", 2);
            startActivity(intent);
        }
    };
}

HomeTaberActivity.java :

public class HomeTaberActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener {

    private TabLayout hometabLayout;

    private ViewPager homeviewPager;
    int value;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hometaber);

        hometabLayout = (TabLayout) findViewById(R.id.hometabLayout);

        hometabLayout.addTab(hometabLayout.newTab().setText("Sign In"));
        hometabLayout.addTab(hometabLayout.newTab().setText("Sign Up"));
        hometabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        homeviewPager = (ViewPager) findViewById(R.id.homepager);

        HomePager adapter = new HomePager(getSupportFragmentManager(), hometabLayout.getTabCount());

        adapter.Initialise(new LoginActivity(),new SignupActivity());
        adapter.addstring("Sign In"); adapter.addstring("Sign Up");
        homeviewPager.setAdapter(adapter);
        hometabLayout.setupWithViewPager(homeviewPager);

           final Intent intent = new Intent(getIntent());
           value = intent.getIntExtra("value", -1);

           if(value == 1) {
                  viewpager.setCurrentItem(0);
              } else {
                  viewpager.setCurrentItem(1);
              }
    }

    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        homeviewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
}

Upvotes: 2

IntelliJ Amiya
IntelliJ Amiya

Reputation: 75778

You can use

  • Create STATIC method.
  • Use INTENT putExtra/getIntExtra Method. Check Vishva Dave's Answer.

1st way

public static ViewPager homeviewPager; //GLOBAL
        public static HomePager adapter; //GLOBAL
        adapter = new HomePager(getSupportFragmentManager(), hometabLayout.getTabCount()); //onCreate section

        public static void _openSIGNIN() // Create this static method
        {
            homeviewPager.setCurrentItem(0);
        }

        public static void _openSIGNUP() // Create this static method
        {
            homeviewPager.setCurrentItem(1);
        }

HomeTaberActivity

        View.OnClickListener listener_signin_btn = new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(HomeActivity.this, HomeTaberActivity.class);
                    startActivity(intent);
                    _openSIGNIN();
                }
            };

        View.OnClickListener listener_signup_btn = new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                     Intent intent = new Intent(HomeActivity.this, HomeTaberActivity.class);
                    startActivity(intent);
                    _openSIGNUP();
                }
            };

Upvotes: 2

Related Questions