次のシーケンスがあります。
- 活動を作成します。
- その中にフラグメントを配置します。
- 次のフラグメントに移動します。
- 戻るボタンで前のフラグメントに戻ります。
よし、やろう。
これは、ナビゲーションで次のフラグメントに移動する方法です。
public static void addFragment(Fragment currentFragment, Fragment fragment, int frameLayout) {
FragmentTransaction fragmentTransaction = currentFragment.getFragmentManager().beginTransaction();
fragmentTransaction.replace(frameLayout, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
public static void replaceFragment(Fragment currentFragment, Fragment fragment, int frameLayout) {
FragmentManager fragmentManager = currentFragment.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment topFragment = fragmentManager.findFragmentById(frameLayout);
int transactionsCount = fragmentManager.getBackStackEntryCount();
if (transactionsCount > 0 && topFragment == currentFragment) {
fragmentManager.popBackStack();
fragmentTransaction.replace(frameLayout, fragment);
fragmentTransaction.addToBackStack(null);
} else {
fragmentTransaction.replace(frameLayout, fragment);
}
fragmentTransaction.commit();
}
onCreateView
最初のフラグメントで、いくつかのデータをロードし、完了したらアクティビティ インジケーターを非表示にします
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout homeLayout = new LinearLayout(activity);
inflater.inflate(R.layout.screen_home, homeLayout);
setupCategoryButtons();
setupHomeGenderRadioButton(mainLayout);
setupMagazinesPreviews(mainLayout);
return homeLayout;
}
private void setupCategoryButtons() {
if(categoriesButtons.size() > 0) {
View categoriesWaitIndicator = activity.findViewById(R.id.categoriesWaitIndicator);
categoriesWaitIndicator.setVisibility(View.INVISIBLE);
LinearLayout categoriesButtonsLayout = (LinearLayout)activity.findViewById(R.id.categoryButtonsLayout);
for(CategoryButton categoryButton : categoriesButtons) {
categoriesButtonsLayout.addView(categoryButton);
}
refreshCategoriesButtons();
}
}
特にない。そして、それは完璧に機能します。この画面に戻るまで。
この画面に戻ると、次NullPointerException
の行に進みます。
categoriesWaitIndicator.setVisibility(View.INVISIBLE);
categoriesButtonsLayout.addView(categoryButton);
アプリがそれらのビューを見つけられないようです! 私はそれをやろうとしましonResume
たが、同じ効果があります。私は何を間違っていますか?