Получение номера текущей вкладки в активности с вкладками - PullRequest
0 голосов
/ 10 мая 2018

Прежде всего, я новичок в разработке для Android и буду признателен за вашу помощь.

У меня есть действие с вкладками в Android Studio, и у меня есть кнопка FloatingAction, чтобы добавить элемент в каждый фрагмент действия с вкладками. Затем эта кнопка вызывает новую Activty, и я хотел бы перейти к новой активности на вкладке Number, чтобы я мог сохранить ее в базе данных.

Как я могу получить вкладку Number, из которой было сгенерировано новое действие?

Ниже приведен код:

 @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;
    }
}

}

Ответы [ 3 ]

0 голосов
/ 10 мая 2018

Существует два способа получить номер текущей вкладки в вкладке «Активность»

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) {

        }
    });
0 голосов
/ 10 мая 2018

Вы можете идентифицировать ваш идентификатор вкладки из этого регистра и вызывать необходимую функцию внутри

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) {
            }
        });
0 голосов
/ 10 мая 2018

Попробуйте это:

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);
        }
    });
...