2017-02-16 1 views
1

Если у меня есть три вкладки (A, B, C), как показать вкладку B, а не вкладку, когда onCreateView?Как изменить мою вкладку, когда onCreateView в фрагменте

Я пытаюсь использовать код viewPager.setCurrentItem(1); в коде, но, похоже, это не так просто.

Может кто-нибудь может дать мне предложение, любая помощь будет принята с благодарностью.

Моя закладка ViewPagerAdapter:

public class ViewPagerDataReportAdapter extends FragmentPagerAdapter { 

    private final List<Fragment> fragmentList = new ArrayList<>(); 
    private final List<String> stringList = new ArrayList<>(); 
    private int numOfTabs; 

    public ViewPagerDataReportAdapter(FragmentManager manager, int numOfTabs) { 
     super(manager); 
     this.numOfTabs = numOfTabs; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0://my tab A 
       DataReportForBloodPressure bloodPressure = new DataReportForBloodPressure(); 
       return bloodPressure; 
      case 1://my tab B 
       DataReportForBloodSugar bloodSugar = new DataReportForBloodSugar(); 
       return bloodSugar; 
      case 2://my tab C 
       DataReportForBodyWeight bodyWeight = new DataReportForBodyWeight(); 
       return bodyWeight; 
      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     return numOfTabs; 
     //return fragmentList.size(); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return stringList.get(position); 
    } 
} 

Мой фрагмент:

public class DataReportThreePages extends Fragment { 

    private View view; 
    private TabLayout tabLayout; 

    public DataReportThreePages() { 
     // Required empty public constructor 
    } 

    public static DataReportThreePages newInstance(){return new DataReportThreePages();} 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
//I want to open B tab not A tab when onCreateView 
     if (view == null) { 
      view = inflater.inflate(R.layout.fragment_data_report_three_pages, container, false); 
      tabLayout=(TabLayout)view.findViewById(R.id.tabLayoutDataReport); 
      tabLayout.addTab(tabLayout.newTab().setText(R.string.bloodPressure));//setText for A 
      tabLayout.addTab(tabLayout.newTab().setText(R.string.bloodSugar));//setText for B 
      tabLayout.addTab(tabLayout.newTab().setText(R.string.bodyWeight));//setText for C 
      tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 



      final ViewPager viewPager=(ViewPager)view.findViewById(R.id.viewPagerDataReport); 

      viewPager.setCurrentItem(1);//it's no working 

      ViewPagerDataReportAdapter viewPagerAdapter=new ViewPagerDataReportAdapter(getChildFragmentManager(),tabLayout.getTabCount()); 
      viewPager.setAdapter(viewPagerAdapter); 
      viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
      tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
       @Override 
       public void onTabSelected(TabLayout.Tab tab) { 
        viewPager.setCurrentItem(tab.getPosition()); 
       } 

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

       } 

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

       } 
      }); 

     } 
     return view; 
    } 
+0

Пожалуйста, показать код с 'viewPager.setCurrentItem (1);' –

+0

один вопрос может быть, что вы звоните viewPager.setCurrentItem (1) перед установкой адаптера для ViewPager. Попробуйте вызвать его после viewPager.setAdapter (viewPagerAdapter); – Gautam

+0

Я понял! спасибо, что ответили вам обоим –

ответ

1

Вы должны установить

viewPager.setCurrentItem(1); 

после

viewPager.setAdapter(viewPagerAdapter); 
+0

ой, я скучаю по нему! Спасибо за вашу помощь ! –

1

набор:

viewPager.setCurrentItem(1); 
+0

Я установил неправильный шаг, спасибо за ваш ответ –

2

использование этой линии

viewPager.setCurrentItem(1);

после кода ниже, поскольку он установлен текущий элемент после установленного адаптера зрения пейджера.

ViewPagerDataReportAdapter viewPagerAdapter=new ViewPagerDataReportAdapter(getChildFragmentManager(),tabLayout.getTabCount()); 
     viewPager.setAdapter(viewPagerAdapter); 

Счастливый Coding

+0

спасибо, я получил его сейчас –

Смежные вопросы