3

首先,我是 Android 开发的新手,非常感谢您的帮助。

我在 android studio 中有一个选项卡式活动,我有一个 FloatingActionButton 来在选项卡式活动的每个片段中添加一个项目。然后此按钮调用一个新的 Activty,我想将选项卡编号传递给新活动,以便我可以将其存储在数据库中。

如何获取生成新活动的选项卡编号?

下面是代码:

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


      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);

      mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());


      mViewPager = (ViewPager) findViewById(R.id.container);
      mViewPager.setAdapter(mSectionsPagerAdapter);

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

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


      FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
      fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent startNewPostActivity = new Intent(getApplicationContext(), NewPostActivity.class);
            startNewPostActivity.putExtra("Fragment_Position", position_fragment);   

            startActivity(startNewPostActivity);
        }
    });



}

为了获得这个位置,我做了以下事情:设置 position_fragment = position; 但是这会返回错误的选项卡编号。

公共类 SectionsPagerAdapter 扩展 FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
         position_fragment = position;  // not good
        return PlaceholderFragment.newInstance(position);
    }

    @Override
    public int getCount() {
        // Show 5 total pages.
        return 5;
    }
}

}

4

3 回答 3

2

尝试这个:

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

            Intent startNewPostActivity = new Intent(getApplicationContext(), NewPostActivity.class);
            startNewPostActivity.putExtra("Fragment_Position", mViewPager.getCurrentItem());   

            startActivity(startNewPostActivity);
        }
    });
于 2018-05-10T11:32:19.467 回答
2

您可以从这些开关盒中识别您的标签 ID,并在里面调用必要的函数

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());//setting current selected item over viewpager
                switch (tab.getPosition()) {
                    case 0:
                        //Log.e("TAG","TAB1");
                        break;
                    case 1:
                        //Log.e("TAG","TAB2");
                        break;
                    case 2:
                        //Log.e("TAG","TAB3");
                        break;
                    case 3:
                        //Log.e("TAG","TAB4");
                        break;
                    case 4:
                        //Log.e("TAG","TAB5");
                        break;
                    case 5:
                        //Log.e("TAG","TAB6");
                        break;
                    case 6:
                        //Log.e("TAG","TAB7");
                        break;
                }
            }

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

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });
于 2018-05-10T11:35:41.017 回答
1

有两种方法可以在选项卡式活动中获取当前选项卡的数量

1.使用ViewPager.getCurrentItem()

返回处于空闲状态的视图层次结构中将保留到当前页面任一侧的页面数。默认为 1。

示例代码

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

        Intent startNewPostActivity = new Intent(getApplicationContext(), NewPostActivity.class);
        startNewPostActivity.putExtra("Fragment_Position", mViewPager.getCurrentItem());   

        startActivity(startNewPostActivity);
    }

2.使用TabLayout.addOnTabSelectedListener()

添加将在选项卡选择更改时调用的 TabLayout.OnTabSelectedListener。示例代码

    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            int position = tab.getPosition();
        }

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

        }

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

        }
    });
于 2018-05-10T11:33:53.517 回答