Android 在当前片段的方向上调用上一个片段的onSaveInstanceState 我在做什么: 我将一个片段(eg::fragment-a)加载到容器中,然后 onSaveInstanceState事件我正在将一些数据存储到包中

Android 在当前片段的方向上调用上一个片段的onSaveInstanceState 我在做什么: 我将一个片段(eg::fragment-a)加载到容器中,然后 onSaveInstanceState事件我正在将一些数据存储到包中,android,android-fragments,Android,Android Fragments,我使用代码 现在,单击按钮,我用Fragment-B替换容器 在Fragment-A中 我使用代码 我已成功加载片段-B 现在,关于片段-B的方向变化,onSaveInstanceState Fragment-Aid开火 问题: 这是怎么发生的 我怎样才能确保这不会发生 实际上,Fragment-A仍然存在,并且位于Fragment-B的下方,这是由于在替换片段时添加了addToBackStack(null) How can i make sure this wont happen

我使用代码

  • 现在,单击按钮,我用
    Fragment-B
    替换
    容器
    Fragment-A中
我使用代码

  • 我已成功加载
    片段-B

  • 现在,关于片段-B的方向变化,
    onSaveInstanceState
    Fragment-A
    id开火


问题
  • 这是怎么发生的
  • 我怎样才能确保这不会发生
实际上,
Fragment-A
仍然存在,并且位于
Fragment-B
的下方,这是由于在替换片段时添加了
addToBackStack(null)

How can i make sure this wont happen ?
您可以删除
addToBackStack(null)
或在
onSaveInstanceState
方法中计算堆叠片段的数量,当它为0时,您可以在
onSaveInstanceState
中运行代码

编辑:

public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    FragmentManager fm = getActivity().getSupportFragmentManager();
    if(fm.getBackStackEntryCount() == 0)
    outState.putInt("yourSpinner", spnSearchByCity.getSelectedItemPosition());

}

查看:[+1]以获取信息。。。。在引号中“计算onSaveInstanceState方法中堆叠的片段数,当它为0时,您可以在onSaveInstanceState中运行代码”。。。。。。你能给我举个例子说明你的答案吗@Devrath首先要做的是你只在你的片段中使用addtobackstack我在你的片段中使用addtobackstack。。。不是在B。。。。我还删除了fragmentA中的addToBackStack(null)…但它仍在抛出相同的场景(它可能在backbackback中包含任何其他东西?可能吗。。。。。我无法理解答案@Rod_Algonquin…中的“计算onSaveInstanceState方法中堆叠片段的数量,当它为0时,您可以在onSaveInstanceState中运行代码”。。。。我能解决它谢谢,但我想问。。。。。当我们在当前片段中旋转设备时,控件是否总是转到SaveInstanceState上的前一个片段?
How is this taking place ?
How can i make sure this wont happen ?
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    FragmentManager fm = getActivity().getSupportFragmentManager();
    if(fm.getBackStackEntryCount() == 0)
    outState.putInt("yourSpinner", spnSearchByCity.getSelectedItemPosition());

}