我已经看到很多答案,但似乎没有找到答案。我在我的一个片段中使用了新的FAB,并希望在特定片段进入backstack时删除它,但我不确定片段中的哪个方法在被添加到后栈并被其他片段替换时会被调用。
答案 0 :(得分:0)
只要替换Fragment
或将其添加到backstack
1) onPause()
2) onStop()
3) onDestroyView()
在Fragment
。
http://developer.android.com/guide/components/fragments.html#Creating
答案 1 :(得分:0)
这是我的建议 -
首先,在Activity中添加动画代码和backstack监听器:
sonar.python.xunit.skipDetails=false
然后 - 根据背斜深度 - 显示或隐藏FAB:
public class MainActivity extends AppCompatActivity
implements FragmentManager.OnBackStackChangedListener {
private FloatingActionButton mFab;
private Animation mShowFab;
private Animation mHideFab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportFragmentManager().addOnBackStackChangedListener(this);
mShowFab = AnimationUtils.makeInAnimation(this, false);
mShowFab.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
mFab.setVisibility(View.VISIBLE);
}
});
mHideFab = AnimationUtils.makeOutAnimation(this, true);
mHideFab.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
mFab.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
});
}
public void showFab(boolean show) {
boolean visible = mFab.isShown();
if (show) {
if (!visible)
mFab.startAnimation(mShowFab);
} else {
if (visible)
mFab.startAnimation(mHideFab);
}
}