2

我有以下问题。我试图在配置更改时保留我的片段之一的布局。因此,我想,我将能够使用setRetainInstance(true). 然而,事实证明它不起作用。问题是,onCreateView每次配置更改时都会调用它,以便我的布局重置为初始状态。

我可以做些什么来保留我的布局?我是否必须将我的代码移到onCreateView其他地方?

请注意:我不能在清单中使用 hack,android:configChanges="orientation"因为我的标签托管活动托管了更多标签。我只想将状态保留在一个选项卡中。

这是我的一些代码:

public class MyFragment extends SherlockFragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);   
    setRetainInstance(true);
    View rootView = inflater.inflate(R.layout.abc, container, false);

    // Some more code that was omitted ..

    return rootView;
}
}
4

1 回答 1

0

你称之为“hack”的东西实际上并不是......android:configChanges="orientation"在你的清单中只是告诉Android框架而不是方向更改的默认行为(关闭并重新启动你的应用程序,导致onCreateView()Fragment也被调用),您将在您的应用程序中自己处理方向更改。

它不做的(当然)是实现您想要的行为(即保持您的选项卡布局之一不变)。这您必须自己做,例如将所有其他布局替换为特定的纵向/横向布局,但保持特定选项卡不变。onConfigurationChanged()您在您的回调中实现此行为,顺便说一下,只有在您在清单中Activity设置后才会调用它。android:configChanges

于 2013-08-19T09:56:11.583 回答