0

Я новичок в разработке приложений для Android, и сейчас я работаю над проектом, в котором есть NavigationDrawer с TabBarLayout. Моя проблема заключается в том, что я был фрагмент, состоящий из двух кнопок Вход и регистрация:viewpager.setCurretntItem() на кнопке onClickListener

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

       fragmentManager=getActivity().getSupportFragmentManager(); 
       fragmentTransaction=fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.containerView,new TabFragment()).addToBackStack(null).commit(); 
      } 
     }); 

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

       fragmentManager=getActivity().getSupportFragmentManager(); 
       fragmentTransaction=fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.containerView,new TabFragment()).addToBackStack(null).commit(); 
      } 
     }); 

Теперь, если я нажимаю на входе в систему или зарегистрироваться расположение кнопок TabBar открытым. Теперь я хочу, чтобы, если я нажму кнопку входа в систему, фрагмент входа отображается в макете табуляции, и если я нажму на кнопку регистрации, зарегистрируйте фрагмент, открытый на вкладке.

Я также поиск по Google для этого и найти viewpager.setCurrentItem, но я не в состоянии использовать это для моего требования

я использую как этот

public class TabFragment extends Fragment { 

    public static TabLayout tabLayout; 
    public static ViewPager viewPager; 
    public static int int_items = 2 ; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

     View x=inflater.inflate(R.layout.tab_layout,null); 

     tabLayout=(TabLayout)x.findViewById(R.id.tabs); 
     viewPager=(ViewPager)x.findViewById(R.id.viewpager); 

     viewPager.setAdapter(new MyAdapter(getChildFragmentManager())); 

     viewPager.setCurrentItem(1); //here i am unable to decide how to open specific fragment 

     tabLayout.post(new Runnable() { 
      @Override 
      public void run() { 

       tabLayout.setupWithViewPager(viewPager); 
      } 
     }); 
     return x; 
    } 
    class MyAdapter extends FragmentPagerAdapter{ 

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

     @Override 
     public Fragment getItem(int position) { 
      switch (position) 
      { 
       case 0: return new Login(); 
       case 1: return new Registration(); 

      } 

      return null; 
     } 

     @Override 
     public int getCount() { 
      return int_items; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) 
      { 
       case 0: 
        return "Login"; 
       case 1: 
        return "Registration"; 
      } 
      return null; 
     } 
    } 

пожалуйста намекают мне некоторую логику, чтобы сделать это ... спасибо заранее ...

ответ

0

Пропустить логическое нажатие кнопки и получить их в TabFragment.

Проверьте логическое и установить элемент, соответствующий ему ViewPager:

первым в регистре и авторизации значение кнопки фрагмент прохода, чтобы определить, какая кнопка нажата

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

       fragmentManager=getActivity().getSupportFragmentManager(); 
       Bundle bundle=new Bundle(); 
       bundle.putBoolean("Register",false); 
       TabFragment fragment=new TabFragment(); 
       fragment.setArguments(bundle); 
       fragmentTransaction=fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.containerView,fragment).addToBackStack(null).commit(); 
      } 
     }); 

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


       fragmentManager=getActivity().getSupportFragmentManager(); 
       Bundle bundle=new Bundle(); 
       bundle.putBoolean("Register",true); 
       TabFragment fragment=new TabFragment(); 
       fragment.setArguments(bundle); 
       fragmentTransaction=fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.containerView,fragment).addToBackStack(null).commit(); 
      } 
     }); 

И после того, что в макете TabBar использовать этот код рассмотрим булевы значения является истинным пр ложных

@Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

     View x=inflater.inflate(R.layout.tab_layout,null); 

     tabLayout=(TabLayout)x.findViewById(R.id.tabs); 
     viewPager=(ViewPager)x.findViewById(R.id.viewpager); 

     viewPager.setAdapter(new MyAdapter(getChildFragmentManager())); 


     Bundle bundle=getArguments(); 
     check=bundle.getBoolean("Register"); 
     if (check) 
     { 
      viewPager.setCurrentItem(1); 
     } 

     tabLayout.post(new Runnable() { 
      @Override 
      public void run() { 

       tabLayout.setupWithViewPager(viewPager); 
      } 
     }); 
     return x; 
    } 
+0

и как рассмотреть для кнопки, которые это BOOL верно – Manish

+0

это ваш logic.Say для входа в систему переключате n вы устанавливаете логическое значение true и для регистрации false. Затем проверьте значение boolean и запустите соответствующий элемент viewpager. – kgandroid

+0

спасибо за ваш отзыв, но я прошу войти в систему и зарегистрировать кнопку на другой странице фрагмента и как я расскажу о макете табуляции, на которую нажата кнопка, чтобы открыть конкретную страницу входа или регистрации .... – Manish