戻るボタンをクリックすると、画面には前のフラグメントが表示されますが、アクションバーで選択されたタブは変更されないため、選択されたフラグメントを onBackStackChanged に設定する必要がありますよね?
ただし、機能していません。別のタブに切り替えると、アプリがフリーズします。ログインすると、バックスタックが非常に迅速に複数回変更されるため、同時に複数回選択されているようです。
凍結する理由がわかりました。選択したナビゲーション項目を設定すると、 onTabSelected() が再度呼び出され、次に backStackChanged が呼び出され、これが繰り返されます。では、タブを再選択することなく、どのタブに下線を引くかを選択するにはどうすればよいでしょうか?
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft){
FragmentManager manage = getSupportFragmentManager();
manage.addOnBackStackChangedListener(new OnBackStackChangedListener(){
@Override
public void onBackStackChanged() {
if(actionBar.getSelectedTab().equals(tabRed))
actionBar.setSelectedNavigationItem(2);
if(actionBar.getSelectedTab().equals(tabBlue))
actionBar.setSelectedNavigationItem(1);
if(actionBar.getSelectedTab().equals(tabMatches))
actionBar.setSelectedNavigationItem(0);
}
});
if(tab.equals(tabComp))
{
ft.setCustomAnimations(R.anim.animation_fragment_out, R.anim.animation_fragment_switch);
trans = getSupportFragmentManager().beginTransaction();
trans.replace(android.R.id.content, teamsFrag);
trans.addToBackStack(null);
trans.commit();
}
else if(tab.equals(tabRed))
{
ft.setCustomAnimations(R.anim.animation_fragment_out, R.anim.animation_fragment_switch);
trans = getSupportFragmentManager().beginTransaction();
trans.replace(android.R.id.content, redScorerFrag);
trans.addToBackStack(null);
trans.commit();
curTab = tabRed;
}