解決方法がわからない、この厄介な問題があります。問題は非常に簡単です。
ボタンクリックで(a )FragmentA
を押すものがあります。で押すことができます。ご覧のとおり、深さは無限です。FragmentB
ListView
FragmentB
FragmentA
OnItemClick
問題は、2 回目にプッシュFragmentB
してから (2 回) の最初のインスタンスに戻るFragmentB
ときListView
です。10 個のインスタンスを作成しようとすると、最初のインスタンスで 10 個すべてのインスタンスのアイテムが作成されます。
誰でも問題を説明できますか?解決策を教えてください。
編集 (コード スニペット):
FollowersFragment frag = new FollowersFragment();
Bundle bundle = new Bundle();
bundle.putString(Constants.USER_ID, userId);
frag.setArguments(bundle);
((MainActivity) getActivity()).pushFragment(frag);
public void pushFragment(TrigdFragment fragment) {
pushFragment(fragment, new AnimationObject());
}
public void pushFragment(TrigdFragment fragment, AnimationObject animate) {
switchContent(fragment, animate, false);
}
public void switchContent(TrigdFragment fragment, AnimationObject anim,
boolean clearBackStack) {
ActionBarHelper mActionBarHelper = ActionBarHelper.getInstance();
supportInvalidateOptionsMenu();
FragmentManager mgr = getSupportFragmentManager();
if (clearBackStack) {
mActionBarHelper.setDisplayHomeAsDrawerEnabled(true);
mgr.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else {
mActionBarHelper.setDisplayHomeAsUpEnabled(true);
}
fragment.setupActionBar(getResources());
FragmentTransaction ft = mgr.beginTransaction();
boolean doingAnimation = false;
if (Util.hasIcecreamSandwich()) {
doingAnimation = anim != null;
if (doingAnimation) {
ft.setCustomAnimations(anim.enterResource, anim.exitResource,
anim.popEnterResource, anim.popExitResource);
}
}
ft.replace(R.id.content_frame, fragment, "current");
if (!clearBackStack) {
ft.addToBackStack(null);
}
ft.commitAllowingStateLoss();
if (Util.hasIcecreamSandwich()) {
if (doingAnimation) {
// This can't be done immediately because the transaction may
// not
// yet be committed. Commits are are posted to the main
// thread's message loop.
mHandler.post(new Runnable() {
@SuppressLint("NewApi")
@Override
public void run() {
invalidateOptionsMenu();
}
});
}
}
}