将片段B的保存状态传递给活动A.

时间:2014-05-22 01:48:01

标签: java android

我的问题有点理论化(我为缺乏代码而道歉,但我甚至不确定这是否可行)。

我有两个活动和两个片段(每个片段对应一个活动)。活动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的状态?非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以保存特定于捆绑中视图的特定状态,以及片段生命周期的每个简历(例如,当重新显示时),您还应该重新加载该捆绑包。这要求您了解其他活动/片段有兴趣从您的片段中检索的具体内容,但最好是从负责提供该信息的片段失败而不是接收端失败,原因不明(IMO)