2016-10-13 7 views
0

3つのタブ(3つのフラグメント)を含むタブレイアウトの申し込みフォームを作成しました。私は以前の断片で「次へ」をクリックした後、次の断片にナビゲートすることに成功しました。しかし、私の問題は、自分の現在のタブを強調表示することができないことです。これは、前のフラグメントで「次へ」をクリックしたときに強調表示する必要があります。Android:ナビゲーション後のタブレイアウトの次のタブのタイトルを強調表示する方法

次は私の最初のフラグメント(アカウント情報)である:誰もが後に次のタブ(フラグメント)のタイトルを強調表示する方法を提案することができ

@Override 
    public void onClick(View v) { 
       emailid = email.getText().toString(); 
       if (!isValidEmail(emailid)) { 
        email.setError("Invalid Email"); 
       } 

       pass = password.getText().toString(); 
       if (!isValidPassword(pass)) { 
        password.setError("Password cannot be empty"); 
       } 
       confirmPass = confirmPassword.getText().toString(); 
       if (!isValidPassword(confirmPass)) { 
        confirmPassword.setError("Password cannot be empty"); 
       } 

私は以下のコードを使用して次のフラグメントにナビゲートしています、それにナビゲートする?

   if (isValidEmail(emailid) && isValidPassword(pass)) { 
        viewPager = (ViewPager) getActivity().findViewById(R.id.pager); 
        viewPager.setCurrentItem(1); 
       } 
    } 

以下は私のアクティビティコードです。どのようにしてタブ上のタッチイベントまたはクリックイベントを無効にできますか?

あなたが

viewPager.addOnPageChangeListener 

、あなたがこのようなメソッドを実装することができます条件

あたりとして再書き込みタブ名に持つonPageSelected方法でこのメソッドを実装する必要があり、このアプローチのための

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

     tabLayout.addTab(tabLayout.newTab().setText("Account Info")); 
     tabLayout.addTab(tabLayout.newTab().setText("Personal Info")); 
     tabLayout.addTab(tabLayout.newTab().setText("Confirmation")); 

     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     viewPager = (ViewPager) findViewById(R.id.pager); 
     viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(viewPagerAdapter); 
     viewPager.setOnTouchListener(new View.OnTouchListener(){ 
      @Override 
      public boolean onTouch(View v, MotionEvent event) 
      { 
       return true; 
      } 
     }); 
     viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 
      // This method will be invoked when a new page becomes selected. 
      @Override 
      public void onPageSelected(int position) { 
      Toast.makeText(SignupActivity.this, "Selected page position: " + position, Toast.LENGTH_SHORT).show(); 
       tabLayout.tabP(true); 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 

答えて

0

private void initTabsName() { 
     for (int i = 0; i < tabLayout.getTabCount(); i++) { 
      TabLayout.Tab tab = tabLayout.getTabAt(i); 
      RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.subcat_custom_tab, tabLayout, false); 
     // do something to make tab selected using if else statements 
     /* // for example 
      if (i == 0) { 

      } 
     */ 
     tab.setCustomView(relativeLayout); 
     } 
    } 
+0

私はあなたのシナリオを試しています、私は成功するかどうかを教えてくれます。私はもう一つの疑問を持っています。私は手動のタッチを無効にする方法と、タブをクリックする方法はありますか? –

+0

okk **あなたのアクティビティから** tabLayout.setupWithViewPager(viewPager); **を削除する必要があります –

+0

実際に私は自分のアクティビティでそのコードを承認していません!!! –

0

以下のコードを追加すると、

if (isValidEmail(emailid) && isValidPassword(pass)) { 
    viewPager = (ViewPager) getActivity().findViewById(R.id.pager); 
    viewPager.setCurrentItem(1); 
    tabLayout = (TabLayout) getActivity().findViewById(R.id.tabLayout); 
    tabLayout.getTabAt(1).select(); 
} 

私は私の条件が真の場合、私のtabLayoutを開始し、タブレイアウトのタブを強調する責任がある方法getTabAt()と呼ばれています。私は文字通り成功した状態で強調表示する必要があるgetTabAt(1)のタブ位置 "1"(0ではなく、最初のタブです)を指定しました。

+0

あなたはこのようなあなた自身のポストへの回答を投稿することはできませんし、いくつかの点の答えとしてそれを受け入れることができます。そうでなければ、この –

+0

には多少の違約金がかかるかもしれません。ごめんなさい。病気に注意してください。 –

+0

このような条件では、投稿を編集して編集部分を太字にすることができます。 –

関連する問題