0

私はアンドロイドのアプリケーション開発には新しく、現在TabBarLayoutでNavigationDrawerを持つプロジェクトに取り組んでいます。 私の問題は、私は2つのボタンのログインからなるフラグメントを持っていたし、登録することである:ボタンonClickListenerでのviewpager.setCurretntItem()

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

を、今私は、ログインをクリックするか、[開く]ボタンのタブバーのレイアウトを登録した場合。 これで、ログインボタンをクリックすると、ログインフラグメントがタブバーレイアウトで表示され、登録ボタンをクリックすると、登録フラグメントがタブバーで開きます。

私はまた、そのために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でそれらを受け取ります。

はブール値をチェックし、appropiate 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レイアウト使用中のものの後に、このコードにはクリックされたボタンを決定するために登録し、ログインボタンフラグメントのパス値で

最初ブール値が真であるとみなすpr false

@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

このブールがどのボタンに当てはまるかを考える方法 – Manish

+0

これはあなたのロジックです。ブール値をtrueに設定し、登録falseにします。ブール値をチェックし、適切なビューページ項目を起動します。 – kgandroid

+0

あなたの返答に感謝しますが、私はログインと登録ボタンに別のフラグメントページがあり、特定のログインまたは登録ページを開くためにどのボタンがクリックされたかをタブバーレイアウトに伝えています.... – Manish

関連する問題