私は、4つの断片を表示したい1つの容器で主な活動をしています。この主なアクティビティには、特定のタブを1つ押すと別のフラグメントが膨張するボトムバーがあります。バックスラックコールを使用してアプリをより流動的にするようにしています。コード怒鳴るが、その下のバーバックスラックから手を出す
@Override
public void onTabSelected(@IdRes int tabId) {
if (tabId == R.id.tab_people) {
cretePeopleFrgament();
} else if (...) {
...
}
bottomBar.setOnTabReselectListener(new OnTabReselectListener() {
@Override
public void onTabReSelected(@IdRes int tabId) {
if (tabId == R.id.tab_people) {
cretePeopleFrgament();
} else if (...) {
...
}
}
});
}
ためlistennersを示して私が膨張するようにしたいのフラグメントがすでにオンになっている場合、私がしようとしています、次の方法でだから
void creteProfileFrgament() {
...
Fragment fraggy = new FragmentProfile();
replaceFragment(fraggy,"Profile",null);
}
ように私のフラグメントを開始します彼がポップされていて、作成されていなければならない場合は、バックスタック。そして、何が起きているのかは、バックスタックからポップが必要なときにonStartから渡されるフラグメントを常に生成することです。私debbugから、私はすでに彼が正しく追加ことがわかり、ブールfragmentpopは
private void replaceFragment (Fragment fragment, String name,Bundle bundle){
boolean fragmentPopped = fragmentManager.popBackStackImmediate(name,0);
if (!fragmentPopped){ //fragment not in back stack, create it.
FragmentTransaction ft= fragmentManager.beginTransaction();
ft.addToBackStack(name);
ft.replace(R.id.conteiner, fragment);
if(bundle!=null)
fragment.setArguments(bundle);
ft.commit();
}
}
を真camesが、そのpopedないこれの目的は、onBackPressed
@Override
public void onBackPressed() {
bottomBar.setVisibility(View.VISIBLE);
int index = fragmentManager.getBackStackEntryCount() - 1;
String tag;
if(index==-1) {
tag = "default";
}else {
FragmentManager.BackStackEntry backEntry = fragmentManager.getBackStackEntryAt(index);
tag = backEntry.getName();
}
switch (tag){
case "Profile":
bottomBar.selectTabAtPosition(0);
break;
case "People":
bottomBar.selectTabAtPosition(1);
break;
case "default":
bottomBar.selectTabAtPosition(0);
}
}
おかげ
質問を編集していくつかの単語とタイトルを正しく表現してください – Pulkit