返回preSS碎片问题的android [英] Back press fragments issue in android
问题描述
我有4个片段:A,B,C,D。现在我从移动A - >乙:所以我的code将
I have four Fragments: A, B, C, D. Now I am moving from A --> B so my code will be
从 A到B
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new B())
.addToBackStack("A")
.commit();
从 B到C 因此code将
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new C())
.addToBackStack("B")
.commit();
现在从 C到D 。但我不希望包括C在backstack因为背部preSS我不希望被所示的C片段。
Now from C to D. But I don't want to include C in backstack because on back press I don't want C fragment to be shown.
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new D())
.commit();
现在,当我preSS后退按钮,将完美高达A.如果我再次重复同样的过程现在的工作。现在再次回到上preSS由D片段,我会直接上的片段而不是将b片段发送。可以请你看着办吧,我上面code做了错误呢?
Now when I press Back button it will work perfectly upto A. Now if I repeat same process again. Now again on back press From D Fragment, I will be sent directly on A fragment instead of B fragment. Can you please figure it out the mistake that I am doing in above code?
推荐答案
下面是BackStackChangedListener的code。
Here is the code of BackStackChangedListener.
public static void performNoBackStackTransaction( final FragmentManager fragmentManager, String tag, Fragment fragment) {
final int newBackStackLength = fragmentManager.getBackStackEntryCount() +1;
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment, tag)
.addToBackStack(tag)
.commit();
fragmentManager.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
int nowCount = fragmentManager.getBackStackEntryCount();
if (newBackStackLength != nowCount) {
// we don't really care if going back or forward. we already performed the logic here.
fragmentManager.removeOnBackStackChangedListener(this);
if ( newBackStackLength > nowCount ) { // user pressed back
fragmentManager.popBackStackImmediate();
}
}
}
});
}
这篇关于返回preSS碎片问题的android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!