如何在单击按钮时打开特定的选项卡式活动? [英] How to open a specific tabbed activity on button click?

查看:52
本文介绍了如何在单击按钮时打开特定的选项卡式活动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含2个按钮的活动-登录和注册.两者都有一个链接的活动(基于片段的选项卡式活动),其中包含登录/注册"表单.

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.

我该如何实现?

下面是我的相应操作代码.

Below are my codes for the respective actions.

家庭活动.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) {

    }
}

推荐答案

添加一个有意图的值.即登录1和注册2,并检查活动值是否为1,然后查看当前页面0项,如果值为2,则查看当前页面1项.

家庭活动.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) {

    }
}

这篇关于如何在单击按钮时打开特定的选项卡式活动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆