24

私はandroid.support.design.widget.TabLayoutを使用しています。ユーザーが2番目のタブを選択した場合、特定の条件で、ユーザーが最初のタブにリダイレクトし、条件が一致するまで2番目のタブに移動できないようにします。これを達成するために私が試したのは、

tabLayout.getTabAt(0).select(); 

ただし、最初のタブは再選択されません

4

8 に答える 8

53

これは、そのビューがまだ適切に初期化されておらず、何らかのアクションを実行しようとしているためです。

解決策として、特定のタブを選択する前に 1 つのハドラーを配置するだけで済みます。

new Handler().postDelayed(
    new Runnable(){
        @Override
        public void run() {
            tabLayout.getTabAt(yourTabIndex).select();
        }
}, 100);
于 2015-08-10T12:15:34.620 に答える
0

でタブを選択できますFragment.onViewCreated()

于 2016-01-10T13:49:40.127 に答える
-1

Mihir の答えは、これを試すアイデアを与えてくれました。ハードコードされたタイマーがなくても機能するようで、選択したタブのスクロールも正しく更新します。

final TabLayout tabLayout = ...;
tabLayout.postOnAnimation(new Runnable() {
    @Override
    public void run() {
        tabLayout.getTabAt(2).select();
    }
});
于 2018-07-08T14:28:40.287 に答える