1

我在包含两个布局的活动中有一个片段,以显示不同方向的每个布局。保留方向变化时不同布局的先前数据

对于纵向,firstLayout

For landscape orientation,secondLayout

这两个布局显示在同一个容器中。

所以我有这样的事情 -

if ((getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
        && getActivity().findViewById(R.id.fragment_container) != null) 
    { 

      view = inflater.inflate(R.layout.firstLayout, container, false); 
      //data 

      return view; 
    } 
    else 
    { 
      view = inflater.inflate(R.layout.secondLayout, container, false); 
      return view; 
    } 

因此,当用户旋转设备(纵向到横向),布局secondLayout被调用。 。 当用户再次旋转,同时在布局secondLayout,片段即布局firstLayout的其他布局叫回在设备

问题是 -

布局firstLayout正在采取这么多的时间加载回来,就好像应用程序暂停了一段时间,因为它在onCreate()中做了很多初始化的东西。

因此,我希望布局firstLayout应该在片段中调用onCreate()时调用。

所以我只是did-

android:configChanges="orientation|screenSize" 

,然后由刚充气我的布局firstLayout覆盖的方法onConfigurationChanged(Configuration newConfig)。但通过这样做,我失去了以前的数据。

我也听说setRetainState(true)用于保留以前的状态,但我不知道如何使用它来获取以前的方向变化数据。

什么是以更快的方式显示布局firstLayout的最佳方式,就像用户单击后退按钮(例如)时出现的那样?

回答

0

setRetainState(真),不与2个片段工作,所以你必须通过数据betwee那些2个片段:

谷歌的代码: http://developer.android.com/training/basics/fragments/communicating.html

上计算器的一些例子: Pass data between fragments Data Sharing between Fragments and Activity in Android

或者只是将数据存储在类变量中

如果用户有t O输入数据时,不要忘了凌驾于onCreateView和附加数据上onAttach

更多的信息在这里: http://developer.android.com/reference/android/app/Fragment.html

相关问题