2016-05-06 121 views
2

私はAndroid Design LibraryのTabLayoutを使用しています。私は複数のタブを持っており、各タブは選択されたときにアクションを持っています。だから私はAndroid TabLayout最初に選択する起動時にタブ

tabLayout.getTabAt(startSelection).select(); 

を行い、属性startSelectionは、これは、タブを選択し、このタブのためのアクションを実行しています。最初のものを除いて、各タブで正常に動作します。これは、アクションを実行せずにスタートアップ(!)で自動的に選択されます。誰にもこれに対する解決策がありますか?

これは、TabLayoutの別の動作を引き起こすため、onTabReselectedメソッドを使用したくありません。また、2番目のタブを選択し、最初のタブを選択することは良い解決策ではありません。

敬具

答えて

1

でこれを試してみてください。解決策は簡単で、(1回)onTabReselectedを使用し、そこでリスナーを上書きします。

tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() { 

    @Override 
    public void onTabSelected(Tab tab) { 
     selectTab(tab); 
    } 

    private void selectTab(Tab tab) { 
     // do something     
    } 

    @Override 
    public void onTabReselected(Tab tab) { 
     if (tab.getPosition() == 0) { 
      selectTab(tab); 

      tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() { 

       @Override 
       public void onTabSelected(Tab tab) { 
        selectTab(tab); 
       } 

       @Override 
       public void onTabReselected(Tab arg0) {        
       } 

       @Override 
       public void onTabUnselected(Tab arg0) {        
       } 
      }); 

     } 
    } 


    @Override 
    public void onTabUnselected(Tab tab) { 
    } 

}); 
0

あなたは文法的にあなたのビューの初期化が完了していないその時間を最初のタブを選択しようとしています。ハンドルを使用して100msまで待ってから、タブを選択してください。

は、私はそれを得たあなたのonCreate()

new Handler().postDelayed(
    new Runnable(){ 
     @Override 
     public void run() { 
      tabLayout.getTabAt(startSelection).select(); 
     } 
}, 100); 
+1

こんにちは、これを行うと初期化プロセスが完了します。私が書いたように、タブを選択するとタブ2,3,4のように機能します。しかし、最初のタブではなく、そのタブがデフォルトで選択されているためです。選択したタブを選択してもアクションは実行されません。 : – user2331454

+0

@ user2331454と記述されていますが、これは動作しません。なぜなら.select()は無視されます。なぜなら、startSelection == currentSelected – Bugdr0id

関連する問題