【问题标题】:Switching to first tab in tabbed activity not working properly in android切换到选项卡式活动中的第一个选项卡在 android 中无法正常工作
【发布时间】:2018-01-12 20:34:02
【问题描述】:

所以我有一个奇怪的问题。基本上我有一个带有四个按钮的主要活动,每个按钮打开一个不同的选项卡(有 4 个选项卡)。现在,如果我单击第 4 个按钮,我会转到第 4 个片段,但是如果我尝试单击选项卡式活动中的第一个选项卡,它不会执行任何操作。

所以如果我从第 2、第 3 或第 4 开始,除非我先点击任何其他标签,否则我无法转到第一个标签。

这只是第一个像这样工作的标签,这让我觉得也许有一些值应该在菜单按钮点击时改变,但没有?

这是我的 TabsActivity onCreate:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tabs);


    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    // Create the adapter that will return a fragment for each of the three
    // primary sections of the activity.
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.container);
    mViewPager.setAdapter(mSectionsPagerAdapter);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);

    //
    int defaultValue = 5;
    //int page = getIntent().getIntExtra("One", defaultValue);
    mViewPager.setCurrentItem(getIntent().getIntExtra("One", defaultValue));
    //
    //
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    //

    mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager))

这里还有一个负责选择片段的 TabsActivity 类:

public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                tab1recipes tab1 = new tab1recipes();
                return tab1;
            case 1:
                tab2timer tab2 = new tab2timer();
                return tab2;
            case 2:
                tab3measure tab3 = new tab3measure();
                return tab3;
            case 3:
                tab4substit tab4 = new tab4substit();
                return tab4;
            default:
                return null;

        }
    }

这里是 MainActivity:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn1 = (Button) findViewById(R.id.recipesbtn);
    Button btn2 = (Button) findViewById(R.id.timerbtn);
    Button btn3 = (Button) findViewById(R.id.measurebtn);
    Button btn4 = (Button) findViewById(R.id.subsbtn);

    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int page=0;
            Intent intent = new Intent(MainActivity.this, TabsActivity.class);//startActivity();
            intent.putExtra("One", page);
            startActivity(intent);
        }
    });

    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int page=1;
            Intent intent = new Intent(MainActivity.this, TabsActivity.class);//startActivity();
            intent.putExtra("One", page);
            startActivity(intent);
        }
    });

    btn3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int page=2;
            Intent intent = new Intent(MainActivity.this, TabsActivity.class);//startActivity();
            intent.putExtra("One", page);
            startActivity(intent);
        }
    });

    btn4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int page=3;
            Intent intent = new Intent(MainActivity.this, TabsActivity.class);//startActivity();
            intent.putExtra("One", page);
            startActivity(intent);
        }
    });

【问题讨论】:

    标签: java android android-fragments tabs


    【解决方案1】:

    好吧,我终于修好了。方法如下(以防万一有人也需要):
    我把

    mViewPager.setCurrentItem(getIntent().getIntExtra("One", defaultValue));

    之后

    mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));

    现在我觉得自己很愚蠢

    【讨论】:

      猜你喜欢
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多