私はandroid.support.design.widget.TabLayoutを使用しています。ユーザーが2番目のタブを選択した場合、特定の条件で、ユーザーが最初のタブにリダイレクトし、条件が一致するまで2番目のタブに移動できないようにします。これを達成するために私が試したのは、
tabLayout.getTabAt(0).select();
ただし、最初のタブは再選択されません
私はandroid.support.design.widget.TabLayoutを使用しています。ユーザーが2番目のタブを選択した場合、特定の条件で、ユーザーが最初のタブにリダイレクトし、条件が一致するまで2番目のタブに移動できないようにします。これを達成するために私が試したのは、
tabLayout.getTabAt(0).select();
ただし、最初のタブは再選択されません
これは、そのビューがまだ適切に初期化されておらず、何らかのアクションを実行しようとしているためです。
解決策として、特定のタブを選択する前に 1 つのハドラーを配置するだけで済みます。
new Handler().postDelayed(
new Runnable(){
@Override
public void run() {
tabLayout.getTabAt(yourTabIndex).select();
}
}, 100);
でタブを選択できますFragment.onViewCreated()
。
Mihir の答えは、これを試すアイデアを与えてくれました。ハードコードされたタイマーがなくても機能するようで、選択したタブのスクロールも正しく更新します。
final TabLayout tabLayout = ...;
tabLayout.postOnAnimation(new Runnable() {
@Override
public void run() {
tabLayout.getTabAt(2).select();
}
});