我的问题有点理论化(我为缺乏代码而道歉,但我甚至不确定这是否可行)。
我有两个活动和两个片段(每个片段对应一个活动)。活动A(纵向模式)仅显示片段A.活动B(纵向模式)仅显示片段B.
当横向中的活动A(MainActivity)必须显示片段A(属于自身)和片段B(属于活动B)时,我的问题就出现了。我似乎无法将活动A(MainActivity)保存到片段B的状态。
这就是我在片段B中尝试过的:
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstanceState();
}
...
我可以使用此代码保存片段B的状态(所有局部变量)吗?
在活动A(MainActivity)中,我试图检测设备是否处于横向状态:
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// restore fragment's B state so the recent data passed into it shows up
// in landscape (in Activity A).
}
else {
// keep doing what you're doing in portrait view.
}
每次旋转设备时,片段B都会返回空白,即使在纵向模式下我也有数据显示(从片段A的列表中选择项目传递的数据)。
在这种特殊情况下,如何捕获片段B的状态?非常感谢。
答案 0 :(得分:0)
您可以保存特定于捆绑中视图的特定状态,以及片段生命周期的每个简历(例如,当重新显示时),您还应该重新加载该捆绑包。这要求您了解其他活动/片段有兴趣从您的片段中检索的具体内容,但最好是从负责提供该信息的片段失败而不是接收端失败,原因不明(IMO)